33#include <system_threads.h>
37#include <libFreeWRL.h>
42#include "../vrml_parser/Structs.h"
43#include "../main/headers.h"
44#include "../main/ProdCon.h"
45#include "../vrml_parser/CParseGeneral.h"
46#include "../main/Snapshot.h"
47#include "../scenegraph/LinearAlgebra.h"
48#include "../scenegraph/Collision.h"
49#include "../scenegraph/quaternion.h"
50#include "../scenegraph/Viewer.h"
51#include "../input/SensInterps.h"
52#include "../x3d_parser/Bindable.h"
53#include "../input/InputFunctions.h"
60#include "jsVRMLClasses.h"
71double dMIN3(
double a,
double b,
double c) {
73 if((a<b)&&(a<c))min=a;
else if((b<a)&&(b<c))min=b;
else min=c;
return min;
76double dMAX3(
double a,
double b,
double c) {
78 if((a>b)&&(a>c))max=a;
else if((b>a)&&(b>c))max=b;
else max=c;
return max;
81void convertRGBtoHSV(
double r,
double g,
double b,
double *h,
double *s,
double *v) {
82 double my_min, my_max, delta;
84 my_min = dMIN3( r, g, b );
85 my_max = dMAX3( r, g, b );
87 delta = my_max - my_min;
97 *h = ( g - b ) / delta;
98 else if( g == my_max )
99 *h = 2 + ( b - r ) / delta;
101 *h = 4 + ( r - g ) / delta;
106void convertHSVtoRGB(
double h,
double s,
double v ,
double *r,
double *g,
double *b)
116 i = (int) floor( h );
119 q = v * ( 1 - s * f );
120 t = v * ( 1 - s * ( 1 - f ) );
122 case 0: *r = v; *g = t; *b = p;
break;
123 case 1: *r = q; *g = v; *b = p;
break;
124 case 2: *r = p; *g = v; *b = t;
break;
125 case 3: *r = p; *g = q; *b = v;
break;
126 case 4: *r = t; *g = p; *b = v;
break;
127 default: *r = v; *g = p; *b = q;
break;
133SFColorGetHSV(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
135SFColorGetHSV(JSContext *cx, uintN argc, jsval *vp) {
136 JSObject *obj = JS_THIS_OBJECT(cx,vp);
137 jsval *argv = JS_ARGV(cx,vp);
147 printf (
"SFColorGetHSV; arguments found but not expected\n");
154 if ((ptr = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
155 printf(
"JS_GetPrivate failed in SFColorGetHSV.\n");
158 cc = ptr->v->sfcolor.c;
162 if ((ptr = (
SFColorNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
163 printf(
"JS_GetPrivate failed in SFColorGetHSV.\n");
169 convertRGBtoHSV(cc[0], cc[1], cc[2],&xp[0],&xp[1],&xp[2]);
171 #ifdef JSVRMLCLASSESVERBOSE
172 printf(
"hsv code, orig rgb is %.9g %.9g %.9g\n", (ptr->v).c[0], (ptr->v).c[1], (ptr->v).c[2]);
173 printf (
"hsv conversion is %lf %lf %lf\n",xp[0],xp[1],xp[2]);
177 result = JS_NewArrayObject(cx, 3, NULL);
178 ADD_ROOT(cx, result);
180 if (JS_NewNumberValue(cx, xp[i],&_v) == JS_FALSE) {
181 printf(
"JS_NewDouble failed for %f in SFColorGetHSV.\n", xp[i]);
184 JS_SetElement(cx, result, (jsint)i, &_v);
189 *rval = OBJECT_TO_JSVAL(result);
191 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(result));
198SFColorSetHSV(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
200SFColorSetHSV(JSContext *cx, uintN argc, jsval *vp) {
201 JSObject *obj = JS_THIS_OBJECT(cx,vp);
202 jsval *argv = JS_ARGV(cx,vp);
204 double hue, saturation, value;
205 double red,green,blue;
208 if(SM_method() == 2){
210 if ((ptr = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
211 printf(
"JS_GetPrivate failed in SSFColorSetHSV.\n");
214 if(ptr->valueChanged)
215 (*ptr->valueChanged) ++;
216 cc = ptr->v->sfcolor.c;
219 if ((ptr = (
SFColorNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
220 printf(
"JS_GetPrivate failed in SFColorSetHSV.\n");
223 ptr->valueChanged ++;
227 if (!JS_ConvertArguments(cx, argc, argv,
"d d d", &hue, &saturation, &value)) {
228 printf(
"JS_ConvertArguments failed in SFColorSetHSV.\n");
233 #ifdef JSCLASSESVERBOSE
234 printf(
"hsv code, orig rgb is %.9g %.9g %.9g\n", (ptr->v).c[0], (ptr->v).c[1], (ptr->v).c[2]);
235 printf (
"SFColorSetHSV, have %lf %lf %lf\n",hue,saturation,value);
238 convertHSVtoRGB(hue,saturation,value, &red, &green, &blue);
240 cc[1] = (float) green;
241 cc[2] = (float) blue;
242 #ifdef JSCLASSESVERBOSE
243 printf(
"hsv code, now rgb is %.9g %.9g %.9g\n", (ptr->v).c[0], (ptr->v).c[1], (ptr->v).c[2]);
247 *rval = OBJECT_TO_JSVAL(obj);
249 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
257SFColorToString(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
259SFColorToString(JSContext *cx, uintN argc, jsval *vp) {
260 JSObject *obj = JS_THIS_OBJECT(cx,vp);
261 jsval *argv = JS_ARGV(cx,vp);
271 if ((ptr = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
272 printf(
"JS_GetPrivate failed in SFColorToString.\n");
275 cc = ptr->v->sfcolor.c;
278 if ((ptr = (
SFColorNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
279 printf(
"JS_GetPrivate failed in SFColorToString.\n");
284 memset(_buff, 0, STRING);
285 sprintf(_buff,
"%.9g %.9g %.9g",
286 cc[0], cc[1], cc[2]);
287 _str = JS_NewStringCopyZ(cx, _buff);
289 *rval = STRING_TO_JSVAL(_str);
291 JS_SET_RVAL(cx,vp,STRING_TO_JSVAL(_str));
298SFColorAssign(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
300SFColorAssign(JSContext *cx, uintN argc, jsval *vp) {
301 JSObject *obj = JS_THIS_OBJECT(cx,vp);
302 jsval *argv = JS_ARGV(cx,vp);
310 if(SM_method() == 2){
312 if ((lhs = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
313 printf(
"JS_GetPrivate failed for obj in SFColorAssign.\n");
316 if (!JSVAL_IS_OBJECT(*vp))
318 if ((rhs = (
AnyNative *)JS_GetPrivateFw(cx, JSVAL_TO_OBJECT(*vp))) == NULL) {
319 printf(
"JS_ConvertArguments failed in SFColorAssign. \n");
322 AnyNativeAssign(lhs,rhs);
325 if ((ptr = (
SFColorNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
326 printf(
"JS_GetPrivate failed for obj in SFColorAssign.\n");
331 CHECK_CLASS(cx,obj,argv,__FUNCTION__,SFColorClass)
334 if (!JS_ConvertArguments(cx, argc, argv,
"o s", &_from_obj, &_id_str)) {
336 if (JS_ConvertArguments(cx, argc, argv,
"oS", &_from_obj, &_id_jsstr) == JS_TRUE) {
337 _id_str = JS_EncodeString(cx,_id_jsstr);
340 printf(
"JS_ConvertArguments failed in SFColorAssign.\n");
344 CHECK_CLASS(cx,_from_obj,argv,__FUNCTION__,SFColorClass)
346 if ((fptr = (
SFColorNative *)JS_GetPrivateFw(cx, _from_obj)) == NULL) {
347 printf(
"JS_GetPrivate failed for _from_obj in SFColorAssign.\n");
350 #ifdef JSVRMLCLASSESVERBOSE
351 printf(
"SFColorAssign: obj = %p, id = \"%s\", from = %p\n", obj, _id_str, _from_obj);
354 SFColorNativeAssign(ptr, fptr);
357 *rval = OBJECT_TO_JSVAL(obj);
359 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
367SFColorConstr(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
369SFColorConstr(JSContext *cx, uintN argc, jsval *vp) {
370 JSObject *obj = JS_NewObject(cx,&SFColorClass,NULL,NULL);
371 jsval *argv = JS_ARGV(cx,vp);
377 if(SM_method() == 2){
379 if((any = (
AnyNative*)AnyNativeNew(FIELDTYPE_SFColor,NULL,NULL)) == NULL){
380 printf(
"AnyfNativeNew failed in SFColorConstr.\n");
383 if (!JS_SetPrivateFw(cx, obj, any)) {
384 printf(
"JS_SetPrivate failed in SFColorConstr.\n");
387 cc = any->v->sfvec3f.c;
392 printf(
"SFColorNativeNew failed in SFColorConstr.\n");
401 if (!JS_SetPrivateFw(cx, obj, ptr)) {
402 printf(
"JS_SetPrivate failed in SFColorConstr.\n");
406 ptr->valueChanged = 1;
412 }
else if (JS_ConvertArguments(cx, argc, argv,
"d d d", &(pars[0]), &(pars[1]), &(pars[2]))) {
413 cc[0] = (float) pars[0];
414 cc[1] = (float) pars[1];
415 cc[2] = (float) pars[2];
417 printf(
"Invalid arguments for SFColorConstr.\n");
420 #ifdef JSVRMLCLASSESVERBOSE
421 printf(
"SFColorConstr: obj = %p args = %d, %f %f %f\n",
423 cc[0], cc[1], cc[2]);
428 *rval = OBJECT_TO_JSVAL(obj);
430 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
439SFColorGetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp){
440#elif JS_VERSION == 185
441SFColorGetProperty(JSContext *cx, JSObject *obj, jsid iid, jsval *vp){
443SFColorGetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSMutableHandleValue hvp){
444 JSObject *obj = *hobj._;
455 if (!JS_IdToValue(cx,iid,&
id)) {
456 printf(
"JS_IdToValue failed in SFColorGetProperty.\n");
462 if ((any = (
AnyNative *)JS_GetPrivateFw(cx,obj)) == NULL) {
463 printf(
"JS_GetPrivate failed in SFColorGetProperty.\n");
466 cc = any->v->sfcolor.c;
470 if ((ptr = (
SFColorNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
471 printf(
"JS_GetPrivate failed in SFColorGetProperty.\n");
476 if (JSVAL_IS_INT(
id)) {
477 switch (JSVAL_TO_INT(
id)) {
480 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
482 "JS_NewDouble failed for %f in SFColorGetProperty.\n",
489 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
491 "JS_NewDouble failed for %f in SFColorGetProperty.\n",
498 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
500 "JS_NewDouble failed for %f in SFColorGetProperty.\n",
512SFColorSetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp){
513#elif JS_VERSION == 185
514SFColorSetProperty(JSContext *cx, JSObject *obj, jsid iid, JSBool strict, jsval *vp){
516SFColorSetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSBool strict, JSMutableHandleValue hvp){
517 JSObject *obj = *hobj._;
527 if (!JS_IdToValue(cx,iid,&
id)) {
528 printf(
"JS_IdToValue failed in SFColorSetProperty.\n");
532 if(SM_method() == 2){
534 if ((any = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
535 printf(
"JS_GetPrivate failed in SFColorSetProperty.\n");
538 if(any->valueChanged)
539 (*any->valueChanged)++;
540 cc = any->v->sfcolor.c;
544 if ((ptr = (
SFColorNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
545 printf(
"JS_GetPrivate failed in SFColorSetProperty.\n");
549 #ifdef JSVRMLCLASSESVERBOSE
550 printf(
"SFColorSetProperty: obj = %p, id = %d, valueChanged = %d\n",
551 obj, JSVAL_TO_INT(
id), ptr->valueChanged);
555 if (!JS_ConvertValue(cx, *vp, JSTYPE_NUMBER, &_val)) {
556 printf(
"JS_ConvertValue failed in SFColorSetProperty.\n");
560 if (JSVAL_IS_INT(
id)) {
561 switch (JSVAL_TO_INT(
id)) {
564 cc[0] = (float) *JSVAL_TO_DOUBLE(_val);
566 cc[0] = (float) JSVAL_TO_DOUBLE(_val);
571 cc[1] = (float) *JSVAL_TO_DOUBLE(_val);
573 cc[1] = (float) JSVAL_TO_DOUBLE(_val);
578 cc[2] = (float) *JSVAL_TO_DOUBLE(_val);
580 cc[2] = (float) JSVAL_TO_DOUBLE(_val);
592SFColorRGBAGetHSV(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
594SFColorRGBAGetHSV(JSContext *cx, uintN argc, jsval *vp) {
595 JSObject *obj = JS_THIS_OBJECT(cx,vp);
596 jsval *argv = JS_ARGV(cx,vp);
601 jsdouble hue = 0, saturation = 0, value = 0;
609 if ((_arrayObj = JS_NewArrayObject(cx, 0, NULL)) == NULL) {
610 printf(
"JS_NewArrayObject failed in SFColorRGBAGetHSV.\n");
615 JS_NewNumberValue(cx,hue,&_v);
616 if (!JS_SetElement(cx, _arrayObj, 0, &_v)) {
617 printf(
"JS_SetElement failed for hue in SFColorRGBAGetHSV.\n");
620 JS_NewNumberValue(cx,saturation,&_v);
621 if (!JS_SetElement(cx, _arrayObj, 1, &_v)) {
622 printf(
"JS_SetElement failed for saturation in SFColorRGBAGetHSV.\n");
625 JS_NewNumberValue(cx,value,&_v);
626 if (!JS_SetElement(cx, _arrayObj, 2, &_v)) {
627 printf(
"JS_SetElement failed for value in SFColorRGBAGetHSV.\n");
631 *rval = OBJECT_TO_JSVAL(_arrayObj);
633 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(_arrayObj));
642SFColorRGBASetHSV(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
644SFColorRGBASetHSV(JSContext *cx, uintN argc, jsval *vp) {
645 JSObject *obj = JS_THIS_OBJECT(cx,vp);
646 jsval *argv = JS_ARGV(cx,vp);
649 jsdouble hue, saturation, value;
654 if ((ptr = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
655 printf(
"JS_GetPrivate failed in SFColorRGBAToString.\n");
658 cc = ptr->v->sfcolorrgba.c;
662 printf(
"JS_GetPrivate failed in SFColorRGBAToString.\n");
667 if (!JS_ConvertArguments(cx, argc, argv,
"d d d",
668 &hue, &saturation, &value)) {
669 printf(
"JS_ConvertArguments failed in SFColorRGBASetHSV.\n");
676 *rval = OBJECT_TO_JSVAL(obj);
678 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
686SFColorRGBAToString(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
688SFColorRGBAToString(JSContext *cx, uintN argc, jsval *vp) {
689 JSObject *obj = JS_THIS_OBJECT(cx,vp);
690 jsval *argv = JS_ARGV(cx,vp);
701 if ((ptr = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
702 printf(
"JS_GetPrivate failed in SFColorRGBAToString.\n");
705 cc = ptr->v->sfcolorrgba.c;
710 printf(
"JS_GetPrivate failed in SFColorRGBAToString.\n");
715 memset(_buff, 0, STRING);
716 sprintf(_buff,
"%.9g %.9g %.9g %.9g",
717 cc[0], cc[1], cc[2],cc[3]);
718 _str = JS_NewStringCopyZ(cx, _buff);
721 *rval = STRING_TO_JSVAL(_str);
723 JS_SET_RVAL(cx,vp,STRING_TO_JSVAL(_str));
731SFColorRGBAAssign(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
733SFColorRGBAAssign(JSContext *cx, uintN argc, jsval *vp) {
734 JSObject *obj = JS_THIS_OBJECT(cx,vp);
735 jsval *argv = JS_ARGV(cx,vp);
743 if(SM_method() == 2){
745 if ((lhs = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
746 printf(
"JS_GetPrivate failed for obj in SFColorRGBAAssign.\n");
749 if (!JSVAL_IS_OBJECT(*vp))
751 if ((rhs = (
AnyNative *)JS_GetPrivateFw(cx, JSVAL_TO_OBJECT(*vp))) == NULL) {
752 printf(
"JS_ConvertArguments failed in SFColorRGBAAssign. \n");
755 AnyNativeAssign(lhs,rhs);
761 printf(
"JS_GetPrivate failed for obj in SFColorRGBAAssign.\n");
765 CHECK_CLASS(cx,obj,argv,__FUNCTION__,SFColorRGBAClass)
768 if (!JS_ConvertArguments(cx, argc, argv,
"o s", &_from_obj, &_id_str)) {
770 if (JS_ConvertArguments(cx, argc, argv,
"oS", &_from_obj, &_id_jsstr) == JS_TRUE) {
771 _id_str = JS_EncodeString(cx,_id_jsstr);
774 printf(
"JS_ConvertArguments failed in SFColorRGBAAssign.\n");
778 CHECK_CLASS(cx,_from_obj,argv,__FUNCTION__,SFColorRGBAClass)
781 printf(
"JS_GetPrivate failed for _from_obj in SFColorRGBAAssign.\n");
784 #ifdef JSVRMLCLASSESVERBOSE
785 printf(
"SFColorRGBAAssign: obj = %p, id = \"%s\", from = %p\n",
786 obj, _id_str, _from_obj);
789 SFColorRGBANativeAssign(ptr, fptr);
792 *rval = OBJECT_TO_JSVAL(obj);
794 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
802SFColorRGBAConstr(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
804SFColorRGBAConstr(JSContext *cx, uintN argc, jsval *vp) {
805 JSObject *obj = JS_NewObject(cx,&SFColorRGBAClass,NULL,NULL);
806 jsval *argv = JS_ARGV(cx,vp);
812 if(SM_method() == 2){
814 if((any = (
AnyNative*)AnyNativeNew(FIELDTYPE_SFColorRGBA,NULL,NULL)) == NULL){
815 printf(
"AnyfNativeNew failed in SFColorRGBAConstr.\n");
818 if (!JS_SetPrivateFw(cx, obj, any)) {
819 printf(
"JS_SetPrivate failed in SFColorRGBAConstr.\n");
822 cc = any->v->sfvec4f.c;
827 printf(
"SFColorRGBANativeNew failed in SFColorConstr.\n");
836 if (!JS_SetPrivateFw(cx, obj, ptr)) {
837 printf(
"JS_SetPrivate failed in SFColorRGBAConstr.\n");
841 ptr->valueChanged = 1;
849 }
else if (JS_ConvertArguments(cx, argc, argv,
"d d d d",
850 &(pars[0]), &(pars[1]), &(pars[2]), &(pars[3]))) {
851 cc[0] = (float) pars[0];
852 cc[1] = (float) pars[1];
853 cc[2] = (float) pars[2];
854 cc[3] = (float) pars[3];
856 printf(
"Invalid arguments for SFColorRGBAConstr.\n");
862 #ifdef JSVRMLCLASSESVERBOSE
863 printf(
"SFColorRGBAConstr: obj = %p %u args, %f %f %f %f\n",
865 cc[0], cc[1], cc[2],cc[3]);
868 *rval = OBJECT_TO_JSVAL(obj);
870 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
878SFColorRGBAGetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp){
879#elif JS_VERSION == 185
880SFColorRGBAGetProperty(JSContext *cx, JSObject *obj, jsid iid, jsval *vp){
883SFColorRGBAGetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSMutableHandleValue hvp){
884 JSObject *obj = *hobj._;
895 if (!JS_IdToValue(cx,iid,&
id)) {
896 printf(
"JS_IdToValue failed in SFColorRGBAGetProperty.\n");
903 if ((any = (
AnyNative *)JS_GetPrivateFw(cx,obj)) == NULL) {
904 printf(
"JS_GetPrivate failed in SFColorRGBAGetProperty.\n");
907 cc = any->v->sfcolorrgba.c;
911 printf(
"JS_GetPrivate failed in SFColorRGBAGetProperty.\n");
916 if (JSVAL_IS_INT(
id)) {
918 switch (JSVAL_TO_INT(
id)) {
921 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
923 "JS_NewDouble failed for %f in SFColorRGBAGetProperty.\n",
930 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
932 "JS_NewDouble failed for %f in SFColorRGBAGetProperty.\n",
939 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
941 "JS_NewDouble failed for %f in SFColorRGBAGetProperty.\n",
948 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
950 "JS_NewDouble failed for %f in SFColorRGBAGetProperty.\n",
962SFColorRGBASetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp){
963#elif JS_VERSION == 185
964SFColorRGBASetProperty(JSContext *cx, JSObject *obj, jsid iid, JSBool strict, jsval *vp){
966SFColorRGBASetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSBool strict, JSMutableHandleValue hvp){
967 JSObject *obj = *hobj._;
977 if (!JS_IdToValue(cx,iid,&
id)) {
978 printf(
"JS_IdToValue failed in SFColorRGBASetProperty.\n");
982 if(SM_method() == 2){
984 if ((any = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
985 printf(
"JS_GetPrivate failed in SFColorRGBASetProperty.\n");
988 if(any->valueChanged)
989 (*any->valueChanged)++;
990 cc = any->v->sfcolorrgba.c;
995 printf(
"JS_GetPrivate failed in SFColorRGBASetProperty.\n");
999 #ifdef JSVRMLCLASSESVERBOSE
1000 printf(
"SFColorRGBASetProperty: obj = %p, id = %d, valueChanged = %d\n",
1001 obj, JSVAL_TO_INT(
id), ptr->valueChanged);
1005 if (!JS_ConvertValue(cx, *vp, JSTYPE_NUMBER, &_val)) {
1006 printf(
"JS_ConvertValue failed in SFColorRGBASetProperty.\n");
1010 if (JSVAL_IS_INT(
id)) {
1011 switch (JSVAL_TO_INT(
id)) {
1014 cc[0] = (float) *JSVAL_TO_DOUBLE(_val);
1016 cc[0] = (float) JSVAL_TO_DOUBLE(_val);
1021 cc[1] = (float) *JSVAL_TO_DOUBLE(_val);
1023 cc[1] = (float) JSVAL_TO_DOUBLE(_val);
1028 cc[2] = (float) *JSVAL_TO_DOUBLE(_val);
1030 cc[2] = (float) JSVAL_TO_DOUBLE(_val);
1035 cc[3] = (float) *JSVAL_TO_DOUBLE(_val);
1037 cc[3] = (float) JSVAL_TO_DOUBLE(_val);
1048SFImageToString(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
1050SFImageToString(JSContext *cx, uintN argc, jsval *vp) {
1051 JSObject *obj = JS_THIS_OBJECT(cx,vp);
1052 jsval *argv = JS_ARGV(cx,vp);
1057 #ifdef JSVRMLCLASSESVERBOSE
1058 printf(
"SFImageToString: obj = %p, %u args\n", obj, argc);
1065 return doMFToString(cx, obj,
"SFImage", rval);
1067 retval = doMFToString(cx, obj,
"SFImage", &rval);
1068 JS_SET_RVAL(cx,vp,rval);
1075SFImageAssign(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
1077SFImageAssign(JSContext *cx, uintN argc, jsval *vp) {
1078 JSObject *obj = JS_THIS_OBJECT(cx,vp);
1079 jsval *argv = JS_ARGV(cx,vp);
1084 #ifdef JSVRMLCLASSESVERBOSE
1085 printf(
"SFImageAssign: obj = %p, %u args\n", obj, argc);
1089 return _standardMFAssign (cx, obj, argc, argv, rval, &SFImageClass,FIELDTYPE_SFImage);
1091 retval = _standardMFAssign (cx, obj, argc, argv, &rval, &SFImageClass,FIELDTYPE_SFImage);
1092 JS_SET_RVAL(cx,vp,rval);
1099SFImageConstr(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
1101SFImageConstr(JSContext *cx, uintN argc, jsval *vp) {
1102 JSObject *obj = JS_NewObject(cx,&SFImageClass,NULL,NULL);
1103 jsval *argv = JS_ARGV(cx,vp);
1114 #ifdef JSVRMLCLASSESVERBOSE
1115 printf(
"SFImageConstr: obj = %p, %u args\n", obj, argc);
1121 if ((ptr = (
AnyNative *) AnyNativeNew(FIELDTYPE_SFImage,NULL,NULL)) == NULL) {
1122 printf(
"SFImageNativeNew failed in SFImageConstr.\n");
1126 if (!JS_SetPrivateFw(cx, obj, ptr)) {
1127 printf(
"JS_SetPrivate failed in SFImageConstr.\n");
1136 printf(
"SFImageNativeNew failed in SFImageConstr.\n");
1140 if (!JS_SetPrivateFw(cx, obj, ptr)) {
1141 printf(
"JS_SetPrivate failed in SFImageConstr.\n");
1145 ptr->valueChanged = 1;
1156 mv = INT_TO_JSVAL(0);
1157 for (i=0; i<4; i++) {
1160 MFInt32Constr(cx, obj, 0, NULL, &mv);
1170 MFInt32ConstrInternals(cx, obj, 0, NULL, &mv);
1173 if (!JS_DefineElement(cx, obj, (jsuint) i, mv, JS_GET_PROPERTY_STUB, JS_SET_PROPERTY_STUB6, JSPROP_ENUMERATE)) {
1174 printf(
"JS_DefineElement failed for arg %d in SFImageConstr.\n", i);
1178 DEFINE_LENGTH(cx,obj,4)
1179#if JS_VERSION >= 185
1181 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
1187 if ((argc != 4) && (argc != 3)) {
1188 printf (
"SFImageConstr, expect 4 parameters, got %d\n",argc);
1193 DEFINE_LENGTH(cx,obj,argc)
1196 for (i=0; i<3; i++) {
1198 if (JSVAL_IS_INT(argv[i])) {
1200 param[i] = JSVAL_TO_INT(argv[i]);
1203 printf (
"SFImageConstr: parameter %d is not a number\n",i);
1208 expectedSize = param[0] * param[1];
1212 if ((param[2]<0) || (param[2]>4)) {
1214 printf (
"SFImageConstr: with size > 0, comp must be between 1 and 4 inclusive, got %d\n",param[2]);
1219 if ((expectedSize == 0) && (param[2] != 0)) {
1220 printf (
"SFImageConstr: with x and y equal to zero, comp must be zero\n");
1224 if ((expectedSize != 0) && (param[2] == 0)) {
1225 printf (
"SFImageConstr: with x and y not zero, comp must be non-zero\n");
1233 #ifdef JSVRMLCLASSESVERBOSE
1234 printJSNodeType(cx,JSVAL_TO_OBJECT(argv[3]));
1237 CHECK_CLASS(cx,JSVAL_TO_OBJECT(argv[3]),NULL,__FUNCTION__,MFInt32Class)
1238 if (!JS_GetProperty(cx, JSVAL_TO_OBJECT(argv[3]), MF_LENGTH_FIELD, &mv)) {
1239 printf(
"JS_GetProperty failed for MFInt32 length in SFImageConstr\n");
1242 if (expectedSize != JSVAL_TO_INT(mv)) {
1243 printf (
"SFImageConstr: expected %d elements in image data, got %d\n",expectedSize, JSVAL_TO_INT(mv));
1249 for (i=0; i<argc; i++) {
1250 if (!JS_DefineElement(cx, obj, (jsint) i, argv[i], JS_GET_PROPERTY_STUB, JS_SET_PROPERTY_STUB6, JSPROP_ENUMERATE)) {
1251 printf(
"JS_DefineElement failed for arg %d in SFImageConstr.\n", i);
1258 *rval = OBJECT_TO_JSVAL(obj);
1260 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
1266SFImageAddProperty(JSContext *cx, JSObject *obj, jsid
id, jsval *vp) {
1267 return doMFAddProperty(cx, obj,
id, vp,
"SFImage");
1271JSBool SFImageGetProperty(JSContext *cx, JSObject *obj, jsid
id, jsval *vp) {
1273JSBool SFImageGetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSMutableHandleValue hvp){
1274 JSObject *obj = *hobj._;
1278 return _standardMFGetProperty(cx, obj,
id, vp,
"_FreeWRL_Internal = 0", FIELDTYPE_SFImage);
1284SFImageSetProperty(JSContext *cx, JSObject *obj, jsid
id, jsval *vp) {
1285#elif JS_VERSION == 185
1286SFImageSetProperty(JSContext *cx, JSObject *obj, jsid
id, JSBool strict, jsval *vp){
1288SFImageSetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSBool strict, JSMutableHandleValue hvp){
1289 JSObject *obj = *hobj._;
1293 return doMFSetProperty(cx, obj,
id, vp, FIELDTYPE_SFImage);
1302SFNodeValueOf(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
1304SFNodeValueOf(JSContext *cx, uintN argc, jsval *vp) {
1305 JSObject *obj = JS_THIS_OBJECT(cx,vp);
1306 jsval *argv = JS_ARGV(cx,vp);
1308 jsval *rval = &rvalinst;
1315 if(SM_method() == 2){
1317 if ((nany = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
1318 printf(
"JS_GetPrivate failed in SFNodeToString.\n");
1321 handle = nany->v->sfnode;
1323 #ifdef JSVRMLCLASSESVERBOSE
1324 printf (
"SFNODETOSTRING\n");
1326 if ((ptr = (
SFNodeNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
1327 printf(
"JS_GetPrivate failed in SFNodeToString.\n");
1330 handle = ptr->handle;
1344 sprintf (tmpline,
"%zx",handle);
1349 nv = strtod(tmpline,NULL);
1353 if (!JS_NewNumberValue(cx, nv, rval)) {
1354 ConsoleMessage (
"Conversion issue in SFNodeToString");
1359 #ifdef JSVRMLCLASSESVERBOSE
1360 printf (
"SFNodeToString, handle %p ",ptr->handle);
1361 printf (
"SFNodeToString, handle as unsignned %u ",(
unsigned int)ptr->handle);
1362 if (ptr->handle != NULL) {
1363 printf (
" (%s) ", stringNodeType (((
struct X3D_Node *)ptr->handle)->_nodeType));
1365 printf (
"string \"%s\"\n",ptr->X3DString);
1368#if JS_VERSION >= 185
1369 JS_SET_RVAL(cx,vp,*rval);
1376SFNodeToString(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
1378SFNodeToString(JSContext *cx, uintN argc, jsval *vp) {
1379 JSObject *obj = JS_THIS_OBJECT(cx,vp);
1380 jsval *argv = JS_ARGV(cx,vp);
1382 jsval *rval = &rvalinst;
1390 #ifdef JSVRMLCLASSESVERBOSE
1391 printf (
"SFNODETOSTRING\n");
1393 if(SM_method() == 2){
1395 if ((nany = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
1396 printf(
"JS_GetPrivate failed in SFNodeToString.\n");
1399 handle = nany->v->sfnode;
1402 if ((ptr = (
SFNodeNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
1403 printf(
"JS_GetPrivate failed in SFNodeToString.\n");
1406 handle = ptr->handle;
1421 memset(buff, 0, STRING);
1422 sprintf (buff,
"_%p_",handle);
1427 _str = JS_NewStringCopyZ(cx, buff);
1430 *rval = STRING_TO_JSVAL(_str);
1432 JS_SET_RVAL(cx,vp,STRING_TO_JSVAL(_str));
1435 REMOVE_ROOT (cx,_str)
1446SFNodeAssign(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
1448SFNodeAssign(JSContext *cx, uintN argc, jsval *vp) {
1449 JSObject *obj = JS_THIS_OBJECT(cx,vp);
1450 jsval *argv = JS_ARGV(cx,vp);
1451 JSString *_id_jsstr;
1454 JSObject *_from_obj;
1459 if(SM_method() == 2){
1461 if (JSVAL_IS_OBJECT(*vp)) {
1462 if ((rhs = (
AnyNative *)JS_GetPrivateFw(cx, JSVAL_TO_OBJECT(*vp))) != NULL) {
1463 if ((lhs = (
AnyNative *)JS_GetPrivateFw(cx, obj)) != NULL) {
1464 AnyNativeAssign(lhs,rhs);
1472 #ifdef JSVRMLCLASSESVERBOSE
1473 printf (
"start of SFNodeAssign argc %d\n",argc);
1477 CHECK_CLASS(cx,obj,argv,__FUNCTION__,SFNodeClass)
1480 if ((ptr = (
SFNodeNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
1481 printf(
"JS_GetPrivate failed for obj in SFNodeAssign.\n");
1486 #ifdef JSVRMLCLASSESVERBOSE
1487 printf (
"SFNodeAssign, we have %d and %d\n",(
int)argv[0], (
int)argv[1]);
1491 if (!JS_ConvertArguments(cx, argc, argv,
"o s", &_from_obj, &_id_str)) {
1493 if (JS_ConvertArguments(cx, argc, argv,
"oS", &_from_obj, &_id_jsstr) == JS_TRUE) {
1494 _id_str = JS_EncodeString(cx,_id_jsstr);
1497 printf(
"JS_ConvertArguments failed in SFNodeAssign.\n");
1500 if (_from_obj != NULL) {
1501 CHECK_CLASS(cx,_from_obj,argv,__FUNCTION__,SFNodeClass)
1503 if ((fptr = (
SFNodeNative *)JS_GetPrivateFw(cx, _from_obj)) == NULL) {
1504 printf(
"JS_GetPrivate failed for _from_obj in SFNodeAssign.\n");
1507 #ifdef JSVRMLCLASSESVERBOSE
1508 printf(
"SFNodeAssign: obj = %p, id = \"%s\", from = %p\n",
1509 obj, _id_str, _from_obj);
1511 }
else { fptr = NULL; }
1514 if (!SFNodeNativeAssign(ptr, fptr)) {
1515 printf(
"SFNodeNativeAssign failed in SFNodeAssign.\n");
1520 *rval = OBJECT_TO_JSVAL(obj);
1522 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
1525 #ifdef JSVRMLCLASSESVERBOSE
1526 printf (
"end of SFNodeAssign\n");
1536SFNodeEquals(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
1538 jsval *rval = &rvalinst;
1540SFNodeEquals(JSContext *cx, uintN argc, jsval *vp) {
1541 JSObject *obj = JS_THIS_OBJECT(cx,vp);
1542 jsval *argv = JS_ARGV(cx,vp);
1545 JSObject *_from_obj;
1548 if(SM_method() == 2){
1551 if (JSVAL_IS_OBJECT(*vp)) {
1552 if ((rhs = (
AnyNative *)JS_GetPrivateFw(cx, JSVAL_TO_OBJECT(*vp))) != NULL) {
1553 if ((lhs = (
AnyNative *)JS_GetPrivateFw(cx, obj)) != NULL) {
1554 iret = lhs->v->sfnode == rhs->v->sfnode ? 1 : 0;
1562 if ((ptr = (
SFNodeNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
1563 printf(
"JS_GetPrivate failed in SFNodeNative.\n");
1566 if (!JS_ConvertArguments(cx, argc, argv,
"o",
1568 printf(
"JS_ConvertArguments failed in SFNodeNative.\n");
1573 if (_from_obj != NULL) {
1574 CHECK_CLASS(cx,_from_obj,argv,__FUNCTION__,SFNodeClass)
1576 if ((fptr = (
SFNodeNative *)JS_GetPrivateFw(cx, _from_obj)) == NULL) {
1577 printf(
"JS_GetPrivate failed for _from_obj in SFNodeAssign.\n");
1580 #ifdef JSVRMLCLASSESVERBOSE
1581 printf(
"SFNodeAssign: obj = %p, id = \"%s\", from = %p\n",
1582 obj, _id_str, _from_obj);
1584 }
else { fptr = NULL; }
1588 iret = SFNodeNativeEquals(ptr, fptr);
1591 *rval = BOOLEAN_TO_JSVAL(iret);
1593 JS_SET_RVAL(cx,vp,BOOLEAN_TO_JSVAL(iret));
1596 #ifdef JSVRMLCLASSESVERBOSE
1597 printf (
"end of SFNodeEqual\n");
1609SFNodeConstr(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
1611SFNodeConstr(JSContext *cx, uintN argc, jsval *vp) {
1612 JSObject *obj = JS_NewObject(cx,&SFNodeClass,NULL,NULL);
1613 jsval *argv = JS_ARGV(cx,vp);
1655 #ifdef JSVRMLCLASSESVERBOSE
1656 printf (
"Start of SFNodeConstr argc %d object %p\n",argc,obj);
1662 cString = STRDUP(
"SFNodeConstr from argc eq 0");
1663 }
else if (argc == 1) {
1665 myStr = JS_ValueToString(cx, argv[0]);
1667 cString = JS_GetStringBytes(myStr);
1669 cString = JS_EncodeString(cx,myStr);
1671 #ifdef JSVRMLCLASSESVERBOSE
1672 printf (
"SFNodeConstr, argc =1l string %s\n",cString);
1676 if (JSVAL_IS_OBJECT(argv[0])) {
1678 #ifdef JSVRMLCLASSESVERBOSE
1679 printf (
"SFNodeConstr, cstring was an object\n");
1681 if(SM_method() == 2){
1683 if ((rhs = (
AnyNative *)JS_GetPrivateFw(cx, JSVAL_TO_OBJECT(argv[0]))) == NULL) {
1684 #ifdef JSVRMLCLASSESVERBOSE
1685 printf(
"JS_GetPrivate failed in SFNodeConstr.\n");
1690 newHandle = rhs->v->sfnode;
1693 if ((oldPtr = (
SFNodeNative *)JS_GetPrivateFw(cx, JSVAL_TO_OBJECT(argv[0]))) == NULL) {
1694 #ifdef JSVRMLCLASSESVERBOSE
1695 printf(
"JS_GetPrivate failed in SFNodeConstr.\n");
1700 newHandle = oldPtr->handle;
1702 if(SM_method() == 0)
1703 cString = STRDUP(oldPtr->X3DString);
1706 #ifdef JSVRMLCLASSESVERBOSE
1707 printf (
"SFNodeConstr, cstring was NOT an object\n");
1711 if (!((cString[0] >=
'A' && cString [0] <=
'Z')||(cString[0] >=
'a' && cString [0] <=
'z'))) {
1713 if (sscanf (cString,
"%p",&newHandle) != 1) {
1714 ConsoleMessage (
"expected pointer for Javascript SFNode constr, got :%s:",cString);
1716 #ifdef JSVRMLCLASSESVERBOSE
1717 printf (
"SFNodeConstr, expected pointer for Javascript SFNode constr, got :%s:\n",cString);
1719 printf (
"SFNodeConstr, got pointer for Javascript SFNode constr, :%p:\n",newHandle);
1728 res->whereToPlaceData = myGroup;
1729 res->ectx = myGroup;
1730 res->media_type = resm_vrml;
1731 res->parsed_request =
"From the EAI bootcamp of life ";
1732 res->offsetFromWhereToPlaceData = (int) offsetof (
struct X3D_Group, children);
1733 #ifdef JSVRMLCLASSESVERBOSE
1734 printf (
"SFNodeConstr, sending resource to parser\n");
1737 #ifdef JSVRMLCLASSESVERBOSE
1738 printf (
"SFNodeConstr, waiting on resource\n");
1742 #ifdef JSVRMLCLASSESVERBOSE
1743 printf (
"SFNodeConstr we have created %d nodes\n",myGroup->children.n);
1751 parser_process_res_VRML_X3D(res);
1752 newHandle = X3D_NODE(myGroup->children.p[0]);
1755 cString = STRDUP(
"node created in SFNodeConstr");
1758 }
else if (argc == 2) {
1761 #ifdef JSVRMLCLASSESVERBOSE
1762 printf (
"SFNodeConstr - have 2 arguments\n");
1765 if ((JSVAL_IS_STRING(argv[0])) && (JSVAL_IS_STRING(argv[1]))) {
1769 _idStr = JS_ValueToString(cx, argv[0]);
1771 _id_c = JS_GetStringBytes(_idStr);
1773 _id_c = JS_EncodeString(cx,_idStr);
1777 cString = STRDUP(_id_c);
1779 _idStr = JS_ValueToString(cx, argv[1]);
1781 _id_c = JS_GetStringBytes(_idStr);
1783 _id_c = JS_EncodeString(cx,_idStr);
1787 if (sscanf (_id_c,
"%p",&newHandle) != 1) {
1788 printf (
"SFNodeConstr - can not get handle from %s\n",_id_c);
1793 #ifdef JSVRMLCLASSESVERBOSE
1794 printf (
"string is :%s: new handle is %p\n",cString,newHandle);
1798 printf (
"SFNodeConstr - 2 args, expected 2 strings\n");
1804 printf(
"SFNodeConstr requires at least 1 string arg.\n");
1808 if(SM_method() == 2){
1810 if ((lhs = (
AnyNative *) AnyNativeNew(FIELDTYPE_SFNode,NULL,NULL)) == NULL) {
1811 printf(
"AnyNativeNew failed in SFNodeConstr.\n");
1814 if (!JS_SetPrivateFw(cx, obj, lhs)) {
1815 printf(
"JS_SetPrivate failed in SFNodeConstr.\n");
1819 lhs->v->sfnode = newHandle;
1822 if ((newPtr = (
SFNodeNative *) SFNodeNativeNew()) == NULL) {
1823 printf(
"SFNodeNativeNew failed in SFNodeConstr.\n");
1832 if (!JS_SetPrivateFw(cx, obj, newPtr)) {
1833 printf(
"JS_SetPrivate failed in SFNodeConstr.\n");
1837 newPtr->handle = newHandle;
1838 if(SM_method() == 0){
1839 newPtr->X3DString = (
char *)STRDUP(cString);
1841 if (!JS_DefineSFNodeSpecificProperties (cx, obj, newHandle)) {
1842 printf(
"JS_DefineSFNodeSpecificProperties failed in SFNodeConstr.\n");
1848 newPtr->valueChanged = 1;
1851 #ifdef JSVRMLCLASSESVERBOSE
1853 if (newHandle == NULL)
1854 printf(
"end of SFNodeConstr: created obj = %p, argc: %u mem ptr: %p (null pointer) text string: %s\n",
1855 obj, argc, newHandle, cString);
1857 printf(
"end of SFNodeConstr: created obj = %p, argc: %u mem ptr: %p (%s) text string: %s\n",
1858 obj, argc, newHandle, stringNodeType(newHandle->_nodeType),cString);
1863 *rval = OBJECT_TO_JSVAL(obj);
1865 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
1875SFNodeFinalize(JSContext *cx, JSObject *obj){
1877SFNodeFinalize(JSFreeOp *fop, JSObject *obj){
1878JSContext *cx = NULL;
1883 #ifdef JSVRMLCLASSESVERBOSE
1884 printf(
"SFNodeFinalize: obj = %p\n", obj);
1900 if ((ptr = (
SFNodeNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
1904 if(SM_method() == 0)
1905 FREE_IF_NZ (ptr->X3DString);
1906 if(SM_method() == 2){
1908 if(any->gc) FREE_IF_NZ(any->v);
1912 JS_SetPrivateFw(cx,obj,NULL);
1917void X3D_ECMA_TO_JS(JSContext *cx,
void *Data,
int datalen,
int dataType, jsval *newval);
1918void X3D_MF_TO_JS(JSContext *cx, JSObject *obj,
void *Data,
int dataType, jsval *newval,
char *fieldName);
1919void X3D_SF_TO_JS(JSContext *cx, JSObject *obj,
void *Data,
unsigned datalen,
int dataType, jsval *newval);
1920void X3D_MF_TO_JS_B(JSContext *cx,
void *Data,
int dataType,
int *valueChanged, jsval *newval);
1921void X3D_SF_TO_JS_B(JSContext *cx,
void *Data,
unsigned datalen,
int dataType,
int *valueChanged, jsval *newval);
1922int getFieldFromNodeAndName(
struct X3D_Node* node,
const char *fieldname,
int *type,
int *kind,
int *iifield,
union anyVrml **value);
1925SFNodeGetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp){
1926#elif JS_VERSION == 185
1927SFNodeGetProperty(JSContext *cx, JSObject *obj, jsid iid, jsval *vp){
1929SFNodeGetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSMutableHandleValue hvp){
1930 JSObject *obj = *hobj._;
1944#if JS_VERSION >= 185
1946 if (!JS_IdToValue(cx,iid,&
id)) {
1947 printf(
"JS_IdToValue failed in SFNodeGetProperty.\n");
1951 if (JSVAL_IS_INT(
id)) {
1952 printf(
"SFNode has no [index] property.\n");
1958 _idStr = JS_ValueToString(cx,
id);
1960 _id_c = JS_GetStringBytes(_idStr);
1962 _id_c = JS_EncodeString(cx,_idStr);
1964 #ifdef JSVRMLCLASSESVERBOSE
1965 printf (
"start of SFNodeGetProperty... id is %s\n",_id_c);
1969 if (strcmp (
"undefined",_id_c) == 0)
return JS_TRUE;
1972 if (strcmp (
"toString",_id_c) == 0)
return JS_TRUE;
1973 if (strcmp (
"valueOf",_id_c) == 0)
return JS_TRUE;
1974 if (strcmp (
"equals",_id_c) == 0)
return JS_TRUE;
1975 if (strcmp (
"assign",_id_c) == 0)
return JS_TRUE;
1978 if ((ptr = (
SFNodeNative *)JS_GetPrivateFw(cx, obj)) != NULL) {
1979 int ifound, type, kind, iifield, *valueChanged, sfsize, sftype;
1981 char *fieldname = _id_c;
1983 if(SM_method() == 2){
1985 node = any->v->sfnode;
1989 #ifdef JSVRMLCLASSESVERBOSE
1990 printf (
"SFNodeGetProperty, working on node %p, field %s\n",ptr->handle,_id_c);
1992 if(SM_method() == 2){
1993 ifound = getFieldFromNodeAndName(node,fieldname,&type,&kind,&iifield,&value);
1995 valueChanged = &node->_change;
1997 if(node->_nodeType == NODE_Script){
1999 struct X3D_Script *scriptnode = X3D_SCRIPT(node);
2000 getFieldFromScript(scriptnode->__scriptObj,fieldname,&type,&kind,&iifield,&value,&valueChanged);
2002 sftype = type2SF(type);
2003 sfsize = sizeofSForMF(sftype);
2007 case FIELDTYPE_SFBool:
2008 case FIELDTYPE_SFFloat:
2009 case FIELDTYPE_SFTime:
2010 case FIELDTYPE_SFDouble:
2011 case FIELDTYPE_SFInt32:
2012 case FIELDTYPE_SFString:
2013 X3D_ECMA_TO_JS(cx, value,sfsize,type,vp);
2015 case FIELDTYPE_SFColor:
2016 case FIELDTYPE_SFNode:
2017 case FIELDTYPE_SFVec2f:
2019 case FIELDTYPE_SFVec3f:
2020 case FIELDTYPE_SFVec3d:
2021 case FIELDTYPE_SFVec4f:
2022 case FIELDTYPE_SFVec4d:
2024 case FIELDTYPE_SFRotation:
2025 X3D_SF_TO_JS_B(cx, value,sfsize, type, valueChanged, vp);
2027 case FIELDTYPE_MFColor:
2028 case FIELDTYPE_MFVec3f:
2029 case FIELDTYPE_MFVec2f:
2030 case FIELDTYPE_MFFloat:
2031 case FIELDTYPE_MFTime:
2032 case FIELDTYPE_MFInt32:
2033 case FIELDTYPE_MFString:
2034 case FIELDTYPE_MFNode:
2035 case FIELDTYPE_MFRotation:
2036 case FIELDTYPE_SFImage:
2038 X3D_MF_TO_JS_B(cx, value, type, valueChanged, vp);
2040 default: printf (
"unhandled type FIELDTYPE_ %d in getSFNodeField\n", type) ;
2053 if(SM_method() == 0){
2056 if( ptr->handle && ptr->handle->_nodeType== NODE_Script )
2062 myObj = X3D_SCRIPT(ptr->handle)->__scriptObj;
2064 ScriptControl = getScriptControlIndex(myObj->num);
2065 cx2 = (JSContext*)ScriptControl->cx;
2066 obj2 = (JSObject*)ScriptControl->glob;
2067 if (JS_GetProperty (cx2, obj2, _id_c, &rval)) {
2068 if (JSVAL_IS_NULL(rval)) {
2069 ConsoleMessage (
"Script - field :%s: does not exist",_id_c);
2078 JS_DefineSFNodeSpecificProperties (cx, obj, ptr->handle);
2081 if (JS_LookupProperty (cx, obj, _id_c, &rval)) {
2082 if (JSVAL_IS_NULL(rval)) {
2085 ConsoleMessage (
"SFNode - field :%s: does not exist",_id_c);
2090 #ifdef JSVRMLCLASSESVERBOSE
2091 printf (
"wondering about rval.. %d. it is a\n",(
int)rval);
2092 if (JSVAL_IS_INT(rval)) printf (
"IS AN INT\n");
2093 if (JSVAL_IS_OBJECT(rval)) printf (
"IS AN OBJECT\n");
2094 if (JSVAL_IS_STRING(rval)) printf (
"IS AN STRING\n");
2095 if (rval == JSVAL_FALSE) printf (
"FALSE\n");
2096 if (rval == JSVAL_NULL) printf (
"NULL\n");
2097 if (rval == JSVAL_ONE) printf (
"ONE\n");
2098 if (rval == JSVAL_ZERO) printf (
"ZERO\n");
2099 if (rval == JSVAL_VOID) printf (
"VOID\n");
2100 if (rval == JSVAL_TRUE) printf (
"TRUE\n");
2108 #ifdef JSVRMLCLASSESVERBOSE
2109 printf (
"SFNodeGetProperty, found field \"%s\" in node, returning property\n",_id_c);
2114 #ifdef JSVRMLCLASSESVERBOSE
2115 printf (
"SFNodeGetProperty, did not find field \"%s\" in node.\n",_id_c);
2121 printf (
"could not get private for SFNodeGetProperty, field :%s:\n",_id_c);
2128void Parser_scanStringValueToMem_B(
union anyVrml* any, indexT ctype,
const char *value,
int isXML);
2129void JS_MF_TO_X3D(JSContext *cx, JSObject * obj,
void *Data,
int dataType, jsval *newval);
2132SFNodeSetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp){
2133#elif JS_VERSION == 185
2134SFNodeSetProperty(JSContext *cx, JSObject *obj, jsid iid, JSBool strict, jsval *vp){
2136SFNodeSetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSBool strict, JSMutableHandleValue hvp){
2137 JSObject *obj = *hobj._;
2141 JSString *_idStr, *_valStr;
2142 char *_id_c, *_val_c;
2146#if JS_VERSION >= 185
2148 if (!JS_IdToValue(cx,iid,&
id)) {
2149 printf(
"JS_IdToValue failed in SFNodeSetProperty.\n");
2153 if(SM_method() == 2){
2155 int ifound, type, kind, iifield, *valueChanged, sfsize, sftype;
2160 if((lhs = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
2163 _idStr = JS_ValueToString(cx,
id);
2165 _id_c = JS_GetStringBytes(_idStr);
2167 _id_c = JS_EncodeString(cx,_idStr);
2170 node = lhs->v->sfnode;
2171 ifound = getFieldFromNodeAndName(node,fieldname,&type,&kind,&iifield,&value);
2173 valueChanged = &node->_change;
2174 if(node->_nodeType == NODE_Script){
2176 struct X3D_Script *scriptnode = X3D_SCRIPT(node);
2177 getFieldFromScript(scriptnode->__scriptObj,fieldname,&type,&kind,&iifield,&value,&valueChanged);
2179 sftype = type2SF(type);
2180 sfsize = sizeofSForMF(sftype);
2183 if( JSVAL_IS_NULL(*vp)){
2184 if(type == FIELDTYPE_SFNode)
2185 value->sfnode = NULL;
2188 }
else if (JSVAL_IS_OBJECT(*vp)) {
2190 if ((rhs = (
AnyNative *)JS_GetPrivateFw(cx, JSVAL_TO_OBJECT(*vp))) == NULL) {
2195 if(type == rhs->type){
2200 shallow_copy_field(rhs->type,rhs->v,value);
2207 case FIELDTYPE_SFBool:
2208 case FIELDTYPE_SFFloat:
2209 case FIELDTYPE_SFTime:
2210 case FIELDTYPE_SFDouble:
2211 case FIELDTYPE_SFInt32:
2212 case FIELDTYPE_SFString:
2213 JS_ECMA_TO_X3D(cx, value,sfsize,type,vp);
2240 printf (
"unhandled type FIELDTYPE_ %d in setSFNodeField\n", type) ;
2262 _idStr = JS_ValueToString(cx,
id);
2263 _valStr = JS_ValueToString(cx, *vp);
2265 _id_c = JS_GetStringBytes(_idStr);
2266 _val_c = JS_GetStringBytes(_valStr);
2268 _id_c = JS_EncodeString(cx,_idStr);
2269 _val_c = JS_EncodeString(cx,_valStr);
2273 #ifdef JSVRMLCLASSESVERBOSE
2274 printf(
"SFNodeSetProperty: obj = %p, id = %s, vp = %s\n",
2275 obj, _id_c, _val_c);
2279 if ((ptr = (
SFNodeNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
2280 printf(
"JS_GetPrivate failed in SFNodeSetProperty.\n");
2284 if (JSVAL_IS_INT(
id)) {
2289 if(SM_method() == 0){
2290 ptr->valueChanged++;
2291 val_len = (int) strlen(_val_c) + 1;
2293 #ifdef JSVRMLCLASSESVERBOSE
2294 printf (
"switching on %d\n",JSVAL_TO_INT(
id));
2297 switch (JSVAL_TO_INT(
id)) {
2299 if ((strlen(ptr->X3DString) + 1) > val_len) {
2301 (
char *) REALLOC (ptr->X3DString, val_len *
sizeof(
char));
2303 memset(ptr->X3DString, 0, val_len);
2304 memmove(ptr->X3DString, _val_c, val_len);
2307 scanUnsignedIntoValue(_val_c,&tmp);
2308 ptr->handle = X3D_NODE(tmp);
2313 #ifdef JSVRMLCLASSESVERBOSE
2314 printf (
"JS_IS_INT false\n");
2316 printf (
"SFNodeSetProperty, setting node %p field %s to value %s\n", ptr->handle,_id_c,_val_c);
2320 ptx = X3D_NODE(ptr->handle);
2321 printf (
"node is of type %s\n",stringNodeType(ptx->_nodeType));
2326 if( ptr->handle->_nodeType== NODE_Script )
2333 char scriptline[100];
2334 JSSCRIPT2 *eventInFunction;
2345 myObj = X3D_SCRIPT(ptr->handle)->__scriptObj;
2347 ScriptControl = getScriptControlIndex(myObj->num);
2348 if ((!ScriptControl->_initialized) || (!ScriptControl->scriptOK)) {
2354 cx2 = (JSContext*)ScriptControl->cx;
2355 obj2 = (JSObject*)ScriptControl->glob;
2360 #if defined(JS_THREADSAFE)
2361 JS_BeginRequest(cx);
2367 JS_NewNumberValue(cx2, TickTime(), &zimbo);
2368 if (!JS_DefineProperty(cx2,obj2,
"__eventInTickTime", zimbo, JS_GET_PROPERTY_STUB, JS_SET_PROPERTY_STUB2, JSPROP_PERMANENT)) {
2369 printf(
"JS_DefineProperty failed for __eventInTickTime at %s:%d.\n",__FILE__,__LINE__);
2376 myfield = script_getField_viaCharName(myObj, _id_c);
2463 strcpy(scriptline,_id_c);
2464 #ifdef JSVRMLCLASSESVERBOSE
2465 printf (
"set_one_ECMAtype, calling JS_DefineProperty on name %s obj %u, setting setECMANative, 0 \n",scriptline,obj2);
2468 if (!JS_DefineProperty(cx2,obj2, scriptline, newval, JS_GET_PROPERTY_STUB, JS_SET_PROPERTY_STUB3, JSPROP_PERMANENT)) {
2469 printf(
"JS_DefineProperty failed for SFNodeSetProperty at %s:%d.\n",__FILE__,__LINE__);
2470 #if defined(JS_THREADSAFE)
2477 JSparamnames = getJSparamnames();
2478 eventInFunction = JSparamnames[myfield->fieldDecl->JSparamNameIndex].eventInFunction;
2479 if ( eventInFunction == NULL) {
2481 sprintf (scriptline,
"set_%s(%s,__eventInTickTime)", _id_c, _id_c);
2483 eventInFunction = JS_CompileScript(cx2, obj2, scriptline, strlen(scriptline),
"compile eventIn",1);
2486 JSparamnames[myfield->fieldDecl->JSparamNameIndex].eventInFunction = eventInFunction;
2487 #if JS_VERSION >= 185
2488 if (!JS_AddObjectRoot(cx,(JSSCRIPT**)(&JSparamnames[myfield->fieldDecl->JSparamNameIndex].eventInFunction))) {
2489 printf(
"JS_AddObjectRoot failed for compilation of script \"%s\" at %s:%d.\n",scriptline,__FILE__,__LINE__);
2499 if (!JS_ExecuteScript(cx2, obj2, eventInFunction, &zimbo))
2501 printf (
"failed to set parameter for eventIn %s in FreeWRL code %s:%d\n",_id_c,__FILE__,__LINE__); \
2507 #if defined(JS_THREADSAFE)
2515 if(0)
if( ptr->handle->_nodeType== NODE_Script )
2522 script = X3D_SCRIPT(ptr->handle)->__scriptObj;
2524 ScriptControl = getScriptControlIndex(script->num);
2525 if ((!ScriptControl->_initialized) || (!ScriptControl->scriptOK)) {
2529 myfield = script_getField_viaCharName(script, _id_c);
2530 if(!myfield)
return JS_FALSE;
2531 itype = ScriptFieldDecl_getType(myfield);
2532 kind = ScriptFieldDecl_getMode(myfield);
2533 Parser_scanStringValueToMem_B(&myfield->value, itype, _val_c, FALSE);
2534 if(kind == PKW_inputOnly || kind == PKW_inputOutput)
2535 myfield->eventInSet = TRUE;
2536 if(kind == PKW_inputOutput || kind == PKW_outputOnly)
2537 myfield->valueChanged = TRUE;
2541 setField_fromJavascript (X3D_NODE(ptr->handle), _id_c, _val_c, FALSE);
2552SFRotationGetAxis(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
2554SFRotationGetAxis(JSContext *cx, uintN argc, jsval *vp) {
2555 JSObject *obj = JS_THIS_OBJECT(cx,vp);
2556 jsval *argv = JS_ARGV(cx,vp);
2563 #ifdef JSVRMLCLASSESVERBOSE
2564 printf (
"start of SFRotationGetAxis\n");
2567 if ((_retObj = JS_ConstructObjectFw(cx, &SFVec3fClass, NULL, NULL)) == NULL) {
2568 printf(
"JS_ConstructObject failed in SFRotationGetAxis.\n");
2573 *rval = OBJECT_TO_JSVAL(_retObj);
2575 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(_retObj));
2580 if ((_rot = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
2581 printf(
"JS_GetPrivate failed for obj in SFRotationGetAxis.\n");
2585 if ((_retNative = (
AnyNative *)JS_GetPrivateFw(cx, _retObj)) == NULL) {
2586 printf(
"JS_GetPrivate failed for _retObj in SFRotationGetAxis.\n");
2589 cc = _rot->v->sfrotation.c;
2590 cclhs = _retNative->v->sfvec3f.c;
2595 printf(
"JS_GetPrivate failed for obj in SFRotationGetAxis.\n");
2599 if ((_retNative = (
SFVec3fNative *)JS_GetPrivateFw(cx, _retObj)) == NULL) {
2600 printf(
"JS_GetPrivate failed for _retObj in SFRotationGetAxis.\n");
2604 cclhs = _retNative->v.c;
2607 veccopy3f(cclhs,cc);
2609 #ifdef JSVRMLCLASSESVERBOSE
2610 printf(
"SFRotationGetAxis: obj = %p, result = [%.9g, %.9g, %.9g]\n",
2612 (_retNative->v).c[0],
2613 (_retNative->v).c[1],
2614 (_retNative->v).c[2]);
2622SFRotationInverse(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
2624SFRotationInverse(JSContext *cx, uintN argc, jsval *vp) {
2625 JSObject *obj = JS_THIS_OBJECT(cx,vp);
2626 jsval *argv = JS_ARGV(cx,vp);
2628 JSObject *_retObj, *_proto;
2634 #ifdef JSVRMLCLASSESVERBOSE
2635 printf (
"start of SFRotationInverse\n");
2638 if ((_proto = JS_GetPrototypeFw(cx, obj)) == NULL) {
2639 printf(
"JS_GetPrototype failed in SFRotationInverse.\n");
2642 if ((_retObj = JS_ConstructObjectFw(cx, &SFRotationClass, _proto, NULL)) == NULL) {
2643 printf(
"JS_ConstructObject failed in SFRotationInverse.\n");
2647 *rval = OBJECT_TO_JSVAL(_retObj);
2649 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(_retObj));
2655 if ((_rot = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
2656 printf(
"JS_GetPrivate failed for obj in SFRotationInverse.\n");
2660 if ((_retNative = (
AnyNative *)JS_GetPrivateFw(cx, _retObj)) == NULL) {
2661 printf(
"JS_GetPrivate failed for _retObj in SFRotationInverse.\n");
2664 cc = _rot->v->sfrotation.c;
2665 cclhs = _retNative->v->sfrotation.c;
2671 printf(
"JS_GetPrivate failed for obj in SFRotationInverse.\n");
2675 if ((_retNative = (
SFRotationNative *)JS_GetPrivateFw(cx, _retObj)) == NULL) {
2676 printf(
"JS_GetPrivate failed for _retObj in SFRotationInverse.\n");
2679 _retNative->valueChanged = 1;
2681 cclhs = _retNative->v.c;
2684 vrmlrot_to_quaternion(&q1, (
double) cc[0],
2685 (
double) cc[1], (
double)cc[2], (
double) cc[3]);
2688 quaternion_inverse(&qret,&q1);
2692 quaternion_to_vrmlrot(&qret, &a, &b, &c, &d);
2694 cclhs[0] = (float) a;
2695 cclhs[1] = (float) b;
2696 cclhs[2] = (float) c;
2697 cclhs[3] = (float) d;
2706SFRotationMultiply(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
2708SFRotationMultiply(JSContext *cx, uintN argc, jsval *vp) {
2709 JSObject *obj = JS_THIS_OBJECT(cx,vp);
2710 jsval *argv = JS_ARGV(cx,vp);
2715 JSObject *_multObj, *_proto, *_retObj;
2716 float *cc, *cc1, *cclhs;
2717 #ifdef JSVRMLCLASSESVERBOSE
2718 printf (
"start of SFRotationMultiply\n");
2721 if (!JS_ConvertArguments(cx, argc, argv,
"o", &_multObj)) {
2722 printf(
"JS_ConvertArguments failed in SFRotationMultiply.\n");
2725 CHECK_CLASS(cx,_multObj,argv,__FUNCTION__,SFRotationClass)
2727 if ((_proto = JS_GetPrototypeFw(cx, _multObj)) == NULL) {
2728 printf(
"JS_GetPrototype failed in SFRotationMultiply.\n");
2732 if ((_retObj = JS_ConstructObjectFw(cx, &SFRotationClass, _proto, NULL)) == NULL) {
2733 printf(
"JS_ConstructObject failed in SFRotationMultiply.\n");
2739 *rval = OBJECT_TO_JSVAL(_retObj);
2741 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(_retObj));
2746 if ((_rot1 = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
2747 printf(
"JS_GetPrivate failed for obj in SFRotationMultiply.\n");
2751 if ((_rot2 = (
AnyNative *)JS_GetPrivateFw(cx, _multObj)) == NULL) {
2752 printf(
"JS_GetPrivate failed for _multObj in SFRotationMultiply.\n");
2756 if ((_retNative = (
AnyNative *)JS_GetPrivateFw(cx, _retObj)) == NULL) {
2757 printf(
"JS_GetPrivate failed for _retObj in SFRotationMultiply.\n");
2760 cc = _rot1->v->sfrotation.c;
2761 cc1 = _rot2->v->sfrotation.c;
2762 cclhs = _retNative->v->sfrotation.c;
2767 printf(
"JS_GetPrivate failed for obj in SFRotationMultiply.\n");
2772 printf(
"JS_GetPrivate failed for _multObj in SFRotationMultiply.\n");
2776 if ((_retNative = (
SFRotationNative *)JS_GetPrivateFw(cx, _retObj)) == NULL) {
2777 printf(
"JS_GetPrivate failed for _retObj in SFRotationMultiply.\n");
2782 cclhs = _retNative->v.c;
2783 _retNative->valueChanged = 1;
2787 vrmlrot_to_quaternion(&q1, (
double) cc[0],
2788 (
double) cc[1], (
double) cc[2], (
double) cc[3]);
2789 vrmlrot_to_quaternion(&q2, (
double) cc1[0],
2790 (
double) cc1[1], (
double) cc1[2], (
double) cc1[3]);
2793 quaternion_multiply(&qret,&q1,&q2);
2797 quaternion_to_vrmlrot(&qret, &a, &b, &c, &d);
2799 cclhs[0] = (float) a;
2800 cclhs[1] = (float) b;
2801 cclhs[2] = (float) c;
2802 cclhs[3] = (float) d;
2811SFRotationMultVec(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
2813SFRotationMultVec(JSContext *cx, uintN argc, jsval *vp) {
2814 JSObject *obj = JS_THIS_OBJECT(cx,vp);
2815 jsval *argv = JS_ARGV(cx,vp);
2817 JSObject *_multObj, *_retObj, *_proto;
2824 float *rot, *vec, *cclhs;
2825 float c1[3], c2[3], r[3];
2828 #ifdef JSVRMLCLASSESVERBOSE
2829 printf (
"start of SFRotationMultiVec\n");
2832 if (!JS_ConvertArguments(cx, argc, argv,
"o", &_multObj)) {
2833 printf(
"JS_ConvertArguments failed in SFRotationMultVec.\n");
2837 CHECK_CLASS(cx,_multObj,argv,__FUNCTION__,SFVec3fClass)
2839 if ((_proto = JS_GetPrototypeFw(cx, _multObj)) == NULL) {
2840 printf(
"JS_GetPrototype failed in SFRotationMultVec.\n");
2844 if ((_retObj = JS_ConstructObjectFw(cx, &SFVec3fClass, _proto, NULL)) == NULL) {
2845 printf(
"JS_ConstructObject failed in SFRotationMultVec.\n");
2850 *rval = OBJECT_TO_JSVAL(_retObj);
2852 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(_retObj));
2858 if ((_rot = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
2859 printf(
"JS_GetPrivate failed for obj in SFRotationMultVec.\n");
2863 if ((_vec = (
AnyNative *)JS_GetPrivateFw(cx, _multObj)) == NULL) {
2864 printf(
"JS_GetPrivate failed for_multObjin SFRotationMultVec.\n");
2867 if ((_retNative = (
AnyNative *)JS_GetPrivateFw(cx, _retObj)) == NULL) {
2868 printf(
"JS_GetPrivate failed for _retObj in SFRotationMultVec.\n");
2871 rot = _rot->v->sfrotation.c;
2872 vec = _vec->v->sfvec3f.c;
2873 cclhs = _retNative->v->sfvec3f.c;
2880 printf(
"JS_GetPrivate failed for obj in SFRotationMultVec.\n");
2886 if ((_vec = (
SFVec3fNative *)JS_GetPrivateFw(cx, _multObj)) == NULL) {
2887 printf(
"JS_GetPrivate failed for_multObjin SFRotationMultVec.\n");
2891 if ((_retNative = (
SFVec3fNative *)JS_GetPrivateFw(cx, _retObj)) == NULL) {
2892 printf(
"JS_GetPrivate failed for _retObj in SFRotationMultVec.\n");
2897 cclhs = _retNative->v.c;
2899 rl = veclength3f(rot);
2901 s = (float) sin(angle);
2902 c = (float) cos(angle);
2903 veccross3f(c1,rot,vec);
2904 rl = veclength3f(c1);
2905 vecscale3f(c1,c1,1.0f/rl);
2906 veccross3f(c2,rot,c1);
2907 rl = veclength3f(c2);
2908 vecscale3f(c2,c2,1.0f/rl);
2910 cclhs[i] = (
float) (vec[i] + s * c1[i] + (1.0-c) * c2[i]);
2918SFRotationSetAxis(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
2920SFRotationSetAxis(JSContext *cx, uintN argc, jsval *vp) {
2921 JSObject *obj = JS_THIS_OBJECT(cx,vp);
2922 jsval *argv = JS_ARGV(cx,vp);
2924 JSObject *_setAxisObj;
2927 #ifdef JSVRMLCLASSESVERBOSE
2928 printf (
"start of SFRotationSetAxis\n");
2931 if (!JS_ConvertArguments(cx, argc, argv,
"o", &_setAxisObj)) {
2932 printf(
"JS_ConvertArguments failed in SFRotationSetAxis.\n");
2936 CHECK_CLASS(cx,_setAxisObj,argv,__FUNCTION__,SFVec3fClass)
2938 if(SM_method() == 2){
2941 if ((_rot = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
2942 printf(
"JS_GetPrivate failed for obj in SFRotationSetAxis.\n");
2946 if ((_vec = (
AnyNative *)JS_GetPrivateFw(cx, _setAxisObj)) == NULL) {
2947 printf(
"JS_GetPrivate failed for _retObj in SFRotationSetAxis.\n");
2950 rot = _rot->v->sfrotation.c;
2951 vec = _vec->v->sfvec3f.c;
2956 printf(
"JS_GetPrivate failed for obj in SFRotationSetAxis.\n");
2960 if ((_vec = (
SFVec3fNative *)JS_GetPrivateFw(cx, _setAxisObj)) == NULL) {
2961 printf(
"JS_GetPrivate failed for _retObj in SFRotationSetAxis.\n");
2970 *rval = OBJECT_TO_JSVAL(obj);
2972 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
2975 #ifdef JSVRMLCLASSESVERBOSE
2976 printf(
"SFRotationSetAxis: obj = %p, result = [%.9g, %.9g, %.9g, %.9g]\n",
2989SFRotationSlerp(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
2991SFRotationSlerp(JSContext *cx, uintN argc, jsval *vp) {
2992 JSObject *obj = JS_THIS_OBJECT(cx,vp);
2993 jsval *argv = JS_ARGV(cx,vp);
2995 jsval *rval = &rvalinst;
2997 JSObject *_destObj, *_retObj, *_proto;
3000 float *rot, *dest, *ret;
3002 #ifdef JSVRMLCLASSESVERBOSE
3003 printf (
"start of SFRotationSlerp\n");
3005 if (!JS_ConvertArguments(cx, argc, argv,
"o d", &_destObj, &t)) {
3006 printf(
"JS_ConvertArguments failed in SFRotationSlerp.\n");
3010 CHECK_CLASS(cx,_destObj,argv,__FUNCTION__,SFRotationClass)
3021 *rval = OBJECT_TO_JSVAL(obj);
3022 }
else if (APPROX(t, 1)) {
3023 *rval = OBJECT_TO_JSVAL(_destObj);
3025 if ((_proto = JS_GetPrototypeFw(cx, _destObj)) == NULL) {
3026 printf(
"JS_GetPrototype failed in SFRotationSlerp.\n");
3030 if ((_retObj = JS_ConstructObjectFw(cx, &SFRotationClass, _proto, NULL)) == NULL) {
3031 printf(
"JS_ConstructObject failed in SFRotationSlerp.\n");
3035 *rval = OBJECT_TO_JSVAL(_retObj);
3037 if(SM_method() == 2){
3039 if ((_rot = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
3040 printf(
"JS_GetPrivate failed for obj in SFRotationSlerp.\n");
3044 if ((_dest = (
AnyNative *)JS_GetPrivateFw(cx, _destObj)) == NULL) {
3045 printf(
"JS_GetPrivate failed for _destObj in SFRotationSlerp.\n");
3049 if ((_ret = (
AnyNative *)JS_GetPrivateFw(cx, _retObj)) == NULL) {
3050 printf(
"JS_GetPrivate failed for _retObj in SFRotationSlerp.\n");
3053 rot = _rot->v->sfrotation.c;
3054 dest = _dest->v->sfrotation.c;
3055 ret = _ret->v->sfrotation.c;
3059 printf(
"JS_GetPrivate failed for obj in SFRotationSlerp.\n");
3064 printf(
"JS_GetPrivate failed for _destObj in SFRotationSlerp.\n");
3069 printf(
"JS_GetPrivate failed for _retObj in SFRotationSlerp.\n");
3076 vrmlrot_to_quaternion(&_quat,
3082 vrmlrot_to_quaternion(&_quat_dest,
3088 quaternion_slerp(&_quat_ret, &_quat, &_quat_dest, t);
3089 quaternion_to_vrmlrot4f(&_quat_ret,ret);
3092#if JS_VERSION >= 185
3093 JS_SET_RVAL(cx,vp,*rval);
3101SFRotationToString(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
3103SFRotationToString(JSContext *cx, uintN argc, jsval *vp) {
3104 JSObject *obj = JS_THIS_OBJECT(cx,vp);
3105 jsval *argv = JS_ARGV(cx,vp);
3112 #ifdef JSVRMLCLASSESVERBOSE
3113 printf (
"start of SFRotationToString\n");
3118 if(SM_method() == 2){
3120 if ((ptr = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
3121 printf(
"JS_GetPrivate failed in SFRotationToString.\n");
3124 cc = ptr->v->sfrotation.c;
3128 printf(
"JS_GetPrivate failed in SFRotationToString.\n");
3133 memset(buff, 0, STRING);
3134 sprintf(buff,
"%.9g %.9g %.9g %.9g",
3135 cc[0], cc[1], cc[2], cc[3]);
3136 _str = JS_NewStringCopyZ(cx, buff);
3139 *rval = STRING_TO_JSVAL(_str);
3141 JS_SET_RVAL(cx,vp,STRING_TO_JSVAL(_str));
3144 REMOVE_ROOT (cx,ptr)
3145 REMOVE_ROOT (cx,_str)
3151SFRotationAssign(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
3153SFRotationAssign(JSContext *cx, uintN argc, jsval *vp) {
3154 JSObject *obj = JS_THIS_OBJECT(cx,vp);
3155 jsval *argv = JS_ARGV(cx,vp);
3156 JSString *_id_jsstr;
3158 JSObject *_from_obj;
3164 #ifdef JSVRMLCLASSESVERBOSE
3165 printf (
"start of SFRotationAssign\n");
3167 if(SM_method() == 2){
3169 if ((lhs = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
3170 printf(
"JS_GetPrivate failed for obj in SFRotationfAssign.\n");
3173 if (!JSVAL_IS_OBJECT(*vp))
3175 if ((rhs = (
AnyNative *)JS_GetPrivateFw(cx, JSVAL_TO_OBJECT(*vp))) == NULL) {
3176 printf(
"JS_ConvertArguments failed in SFRotationAssign. \n");
3179 if(lhs->type != rhs->type)
return JS_FALSE;
3180 AnyNativeAssign(lhs,rhs);
3181 #if JS_VERSION < 185
3182 *rval = OBJECT_TO_JSVAL(obj);
3184 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
3191 printf(
"JS_GetPrivate failed for obj in SFRotationAssign.\n");
3195 CHECK_CLASS(cx,obj,argv,__FUNCTION__,SFRotationClass)
3197 #if JS_VERSION < 185
3198 if (!JS_ConvertArguments(cx, argc, argv,
"o s", &_from_obj, &_id_str)) {
3200 if (JS_ConvertArguments(cx, argc, argv,
"oS", &_from_obj, &_id_jsstr) == JS_TRUE) {
3201 _id_str = JS_EncodeString(cx,_id_jsstr);
3204 printf(
"JS_ConvertArguments failed in SFRotationAssign.\n");
3209 if (_from_obj == NULL) {
3210 printf (
"we have an assignment to null in SFRotationAssign\n");
3211 #if JS_VERSION < 185
3214 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(NULL));
3219 CHECK_CLASS(cx,_from_obj,argv,__FUNCTION__,SFRotationClass)
3222 printf(
"JS_GetPrivate failed for _from_obj in SFRotationAssign.\n");
3225 #ifdef JSVRMLCLASSESVERBOSE
3226 printf(
"SFRotationAssign: obj = %p, id = \"%s\", from = %p\n",
3227 obj, _id_str, _from_obj);
3230 SFRotationNativeAssign(ptr, fptr);
3231 #if JS_VERSION < 185
3232 *rval = OBJECT_TO_JSVAL(obj);
3234 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
3238 #ifdef JSVRMLCLASSESVERBOSE
3239 printf(
"SFRotationAssign: returning object as jsval\n");
3246SFRotationConstr(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
3248SFRotationConstr(JSContext *cx, uintN argc, jsval *vp) {
3249 JSObject *obj = JS_NewObject(cx,&SFRotationClass,NULL,NULL);
3250 jsval *argv = JS_ARGV(cx,vp);
3253 JSObject *_ob1, *_ob2;
3260 float *cc, *vec, *
vec2;
3262 #ifdef JSVRMLCLASSESVERBOSE
3263 printf (
"start of SFRotationConstr\n");
3267 if(SM_method() == 2){
3269 if((any = (
AnyNative*)AnyNativeNew(FIELDTYPE_SFRotation,NULL,NULL)) == NULL){
3270 printf(
"AnyfNativeNew failed in SFRotationConstr.\n");
3273 if (!JS_SetPrivateFw(cx, obj, any)) {
3274 printf(
"JS_SetPrivate failed in SFRotationConstr.\n");
3277 cc = any->v->sfrotation.c;
3282 printf(
"SFRotationNativeNew failed in SFRotationConstr.\n");
3291 if (!JS_SetPrivateFw(cx, obj, ptr)) {
3292 printf(
"JS_SetPrivate failed in SFRotationConstr.\n");
3295 ptr->valueChanged = 1;
3300 cc[0] = 0.0f; cc[1] = 0.0f; cc[2] = 1.0f; cc[3] = 0.0f;
3302 }
else if (argc == 2) {
3304 if (JSVAL_IS_OBJECT(argv[0])) {
3306 _ob1 = JSVAL_TO_OBJECT(argv[0]);
3309 CHECK_CLASS(cx,_ob1,argv,__FUNCTION__,SFVec3fClass)
3312 if ((_vec = (
AnyNative *)JS_GetPrivateFw(cx, _ob1)) == NULL) {
3313 printf(
"JS_GetPrivate failed for arg format \"o d\" in SFRotationConstr.\n");
3316 vec = _vec->v->sfvec3f.c;
3319 if ((_vec = (
SFVec3fNative *)JS_GetPrivateFw(cx, _ob1)) == NULL) {
3320 printf(
"JS_GetPrivate failed for arg format \"o d\" in SFRotationConstr.\n");
3326 if (JSVAL_IS_OBJECT(argv[1])) {
3328 _ob2 = JSVAL_TO_OBJECT(argv[1]);
3332 CHECK_CLASS(cx,_ob2,argv,__FUNCTION__,SFVec3fClass)
3335 if ((_vec2 = (
AnyNative *)JS_GetPrivateFw(cx, _ob2)) == NULL) {
3336 printf(
"JS_GetPrivate failed for _ob1 in SFRotationConstr.\n");
3339 vec2 = _vec2->v->sfvec3f.c;
3342 if ((_vec2 = (
SFVec3fNative *)JS_GetPrivateFw(cx, _ob2)) == NULL) {
3343 printf(
"JS_GetPrivate failed for _ob1 in SFRotationConstr.\n");
3350 if (!JSVAL_IS_NUMBER(argv[1])) {
3351 printf (
"SFRotationConstr param error - number expected\n");
3354 if (!JS_ValueToNumber(cx, argv[1], &doub)) {
3355 printf(
"JS_ValueToNumber failed in SFRotationConstr.\n");
3365 cc[3] = (float) doub;
3367 v1len = veclength3f(vec);
3368 v2len = veclength3f(
vec2);
3369 v12dp = vecdot3f(vec,
vec2);
3370 veccross3f(cc,vec,
vec2);
3374 v12dp /= v1len * v2len;
3375 cc[3] = (float) atan2(sqrt(1 - v12dp * v12dp), v12dp);
3377 }
else if (argc == 4 && JS_ConvertArguments(cx, argc, argv,
"d d d d",
3378 &(pars[0]), &(pars[1]), &(pars[2]), &(pars[3]))) {
3379 cc[0] = (float) pars[0];
3380 cc[1] = (float) pars[1];
3381 cc[2] = (float) pars[2];
3382 cc[3] = (float) pars[3];
3384 printf(
"Invalid arguments for SFRotationConstr.\n");
3388 #ifdef JSVRMLCLASSESVERBOSE
3389 printf(
"SFRotationConstr: obj = %p, %u args, %f %f %f %f\n",
3391 cc[0], cc[1], cc[2], cc[3]);
3396 *rval = OBJECT_TO_JSVAL(obj);
3398 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
3406SFRotationGetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp){
3407#elif JS_VERSION == 185
3408SFRotationGetProperty(JSContext *cx, JSObject *obj, jsid iid, jsval *vp){
3410SFRotationGetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSMutableHandleValue hvp){
3411 JSObject *obj = *hobj._;
3417#if JS_VERSION >= 185
3419 if (!JS_IdToValue(cx,iid,&
id)) {
3420 printf(
"JS_IdToValue failed in SFRotationGetProperty.\n");
3425 #ifdef JSVRMLCLASSESVERBOSE
3426 printf (
"start of SFRotationGetProperty\n");
3428 if(SM_method()== 2){
3430 if ((ptr = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
3431 printf(
"JS_GetPrivate failed in SFRotationGetProperty.\n");
3434 cc = ptr->v->sfrotation.c;
3438 printf(
"JS_GetPrivate failed in SFRotationGetProperty.\n");
3443 if (JSVAL_IS_INT(
id)) {
3444 switch (JSVAL_TO_INT(
id)) {
3447 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
3449 "JS_NewDouble failed for %f in SFRotationGetProperty.\n",
3456 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
3458 "JS_NewDouble failed for %f in SFRotationGetProperty.\n",
3465 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
3467 "JS_NewDouble failed for %f in SFRotationGetProperty.\n",
3474 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
3476 "JS_NewDouble failed for %f in SFRotationGetProperty.\n",
3488SFRotationSetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp){
3489#elif JS_VERSION == 185
3490SFRotationSetProperty(JSContext *cx, JSObject *obj, jsid iid, JSBool strict, jsval *vp){
3492SFRotationSetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSBool strict, JSMutableHandleValue hvp){
3493 JSObject *obj = *hobj._;
3500#if JS_VERSION >= 185
3502 if (!JS_IdToValue(cx,iid,&
id)) {
3503 printf(
"JS_IdToValue failed in SFRotationSetProperty.\n");
3508 #ifdef JSVRMLCLASSESVERBOSE
3509 printf (
"start of SFRotationSetProperty\n");
3511 if(SM_method() == 2){
3513 if ((any = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
3514 printf(
"JS_GetPrivate failed in SFRotationProperty.\n");
3517 if(any->valueChanged)
3518 (*any->valueChanged)++;
3519 cc = any->v->sfrotation.c;
3524 printf(
"JS_GetPrivate failed in SFRotationSetProperty.\n");
3527 ptr->valueChanged++;
3528 #ifdef JSVRMLCLASSESVERBOSE
3529 printf(
"SFRotationSetProperty: obj = %p, id = %d, valueChanged = %d\n",
3530 obj, JSVAL_TO_INT(
id), ptr->valueChanged);
3534 if (!JS_ConvertValue(cx, *vp, JSTYPE_NUMBER, &myv)) {
3535 printf(
"JS_ConvertValue failed in SFRotationSetProperty.\n");
3539 if (JSVAL_IS_INT(
id)) {
3540 switch (JSVAL_TO_INT(
id)) {
3543 cc[0] = (float) *JSVAL_TO_DOUBLE(myv);
3545 cc[0] = (float) JSVAL_TO_DOUBLE(myv);
3550 cc[1] = (float) *JSVAL_TO_DOUBLE(myv);
3552 cc[1] = (float) JSVAL_TO_DOUBLE(myv);
3557 cc[2] = (float) *JSVAL_TO_DOUBLE(myv);
3559 cc[2] = (float) JSVAL_TO_DOUBLE(myv);
3564 cc[3] = (float) *JSVAL_TO_DOUBLE(myv);
3566 cc[3] = (float) JSVAL_TO_DOUBLE(myv);
3583#define __2FNORMALIZE 8
3584JSBool SFVec2fGeneric( JSContext *cx, JSObject *obj,
3585 uintN argc, jsval *argv, jsval *rval,
int op) {
3587 JSObject *_paramObj, *_proto, *_retObj;
3592 float *cc, *cc2, cc3[2], cclhs[2];
3596 int SFParam = FALSE;
3597 int numParam = FALSE;
3600 int retSFVec2f = FALSE;
3601 int retNumeric = FALSE;
3610 if ((op==__2FADD)||(op==__2FDOT)||(op==__2FSUBT))SFParam=TRUE;
3611 if ((op==__2FDIVIDE)||(op==__2FMULT))numParam=TRUE;
3614 if ((op==__2FDOT)||(op==__2FLENGTH)) retNumeric = TRUE;
3615 retSFVec2f = (!retNumeric);
3619 param_isString = JSVAL_IS_STRING (*argv);
3622 if ((SFParam) || (numParam)) {
3624 if (!JSVAL_IS_NUMBER(argv[0])) {
3625 printf (
"SFVec2f param error - number expected\n");
3628 if (!JS_ValueToNumber(cx, argv[0], &d)) {
3629 printf(
"JS_ValueToNumber failed in SFVec2f.\n");
3635 if (param_isString) {
3636 _str = JS_ValueToString(cx, *argv);
3638 charString = JS_GetStringBytes(_str);
3640 charString = JS_EncodeString(cx,_str);
3643 if (sscanf(charString,
"%lf %lf",
3644 &(pars[0]), &(pars[1])) != 2) {
3645 printf (
"conversion problem in SFVec2fGeneric\n");
3654 if (JSVAL_IS_OBJECT(argv[0])) {
3656 if ((_vec2 = (
AnyNative *)JS_GetPrivateFw(cx, JSVAL_TO_OBJECT(argv[0]))) == NULL) {
3657 printf(
"in SFVec2f, RHS was NOT native type \n");
3661 cc2 = _vec2->v->sfvec2f.c;
3669 if (!JS_ConvertArguments(cx, argc, argv,
"o", &_paramObj)) {
3670 printf(
"JS_ConvertArguments failed in SFVec2f.\n");
3674 CHECK_CLASS(cx,_paramObj,argv,__FUNCTION__,SFVec2fClass)
3676 if ((_vec2 = (
SFVec2fNative*)JS_GetPrivateFw(cx, _paramObj)) == NULL) {
3677 printf(
"JS_GetPrivate failed for _paramObj in SFVec2f.\n");
3687 if(SM_method() == 2){
3689 if ((_vec1 = (
AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
3690 printf(
"JS_GetPrivate failed for obj in SFVec3fAdd.\n");
3693 cc = _vec1->v->sfvec2f.c;
3696 if ((_vec1 = (
SFVec2fNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
3697 printf(
"JS_GetPrivate failed for obj in SFVec2fAdd.\n");
3706 vecadd2f(cclhs,cc,cc2);
3709 vecscale2f(cclhs,cc,1.0/d);
3712 vecscale2f(cclhs,cc,d);
3715 vecdif2f(cclhs,cc,cc2);
3718 d = vecdot2f(cc,cc2);
3721 d = veclength2f(cc);
3724 vecnormal2f(cclhs,cc);
3732 if ((_proto = JS_GetPrototypeFw(cx, obj)) == NULL) {
3733 printf(
"JS_GetPrototype failed in SFVec2f.\n");
3737 JS_ConstructObjectFw(cx, &SFVec2fClass, _proto, NULL)) == NULL) {
3738 printf(
"JS_ConstructObject failed in SFVec2f.\n");
3741 *rval = OBJECT_TO_JSVAL(_retObj);
3742 if(SM_method() == 2){
3744 if ((any = (
AnyNative*)JS_GetPrivateFw(cx, _retObj)) == NULL) {
3745 printf(
"JS_GetPrivate failed for _retObj in SFVec3f.\n");
3748 memcpy(any->v->sfvec2f.c,cclhs,2*
sizeof(
float));
3751 if ((_retNative = (
SFVec3fNative*)JS_GetPrivateFw(cx, _retObj)) == NULL) {
3752 printf(
"JS_GetPrivate failed for _retObj in SFVec3f.\n");
3755 memcpy(_retNative->v.c,cclhs,2*
sizeof(
float));
3758 }
else if (retNumeric) {
3759 if (JS_NewNumberValue(cx,d,rval) == JS_FALSE) {
3760 printf(
"JS_NewDouble failed for %f in SFVec2f.\n",d);
3765 #ifdef JSVRMLCLASSESVERBOSE
3767 printf(
"SFVec2fgeneric: obj = %p, result = [%.9g, %.9g]\n",
3769 (_retNative->v).c[0], (_retNative->v).c[1]);
3772 printf(
"SFVec2fgeneric: obj = %p, result = %.9g\n",
3782SFVec2fAdd(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
3783 return SFVec2fGeneric(cx, obj, argc, argv, rval, __2FADD);
3785SFVec2fAdd(JSContext *cx, uintN argc, jsval *vp) {
3786 JSObject *obj = JS_THIS_OBJECT(cx,vp);
3787 jsval *argv = JS_ARGV(cx,vp);
3789 JSBool retval = SFVec2fGeneric(cx, obj, argc, argv, &rval, __2FADD);
3790 JS_SET_RVAL(cx,vp,rval);
3797SFVec2fDivide(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
3798 return SFVec2fGeneric(cx, obj, argc, argv, rval, __2FDIVIDE);
3800SFVec2fDivide(JSContext *cx, uintN argc, jsval *vp) {
3801 JSObject *obj = JS_THIS_OBJECT(cx,vp);
3802 jsval *argv = JS_ARGV(cx,vp);
3804 JSBool retval = SFVec2fGeneric(cx, obj, argc, argv, &rval, __2FDIVIDE);
3805 JS_SET_RVAL(cx,vp,rval);
3812SFVec2fMultiply(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
3813 return SFVec2fGeneric(cx, obj, argc, argv, rval, __2FMULT);
3815SFVec2fMultiply(JSContext *cx, uintN argc, jsval *vp) {
3816 JSObject *obj = JS_THIS_OBJECT(cx,vp);
3817 jsval *argv = JS_ARGV(cx,vp);
3819 JSBool retval = SFVec2fGeneric(cx, obj, argc, argv, &rval, __2FMULT);
3820 JS_SET_RVAL(cx,vp,rval);
3827SFVec2fSubtract(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
3828 return SFVec2fGeneric(cx, obj, argc, argv, rval, __2FSUBT);
3830SFVec2fSubtract(JSContext *cx, uintN argc, jsval *vp) {
3831 JSObject *obj = JS_THIS_OBJECT(cx,vp);
3832 jsval *argv = JS_ARGV(cx,vp);
3834 JSBool retval = SFVec2fGeneric(cx, obj, argc, argv, &rval, __2FSUBT);
3835 JS_SET_RVAL(cx,vp,rval);
3842SFVec2fDot(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
3843 return SFVec2fGeneric(cx, obj, argc, argv, rval, __2FDOT);
3845SFVec2fDot(JSContext *cx, uintN argc, jsval *vp) {
3846 JSObject *obj = JS_THIS_OBJECT(cx,vp);
3847 jsval *argv = JS_ARGV(cx,vp);
3849 JSBool retval = SFVec2fGeneric(cx, obj, argc, argv, &rval, __2FDOT);
3850 JS_SET_RVAL(cx,vp,rval);
3857SFVec2fLength(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
3858 return SFVec2fGeneric(cx, obj, argc, argv, rval, __2FLENGTH);
3860SFVec2fLength(JSContext *cx, uintN argc, jsval *vp) {
3861 JSObject *obj = JS_THIS_OBJECT(cx,vp);
3862 jsval *argv = JS_ARGV(cx,vp);
3864 JSBool retval = SFVec2fGeneric(cx, obj, argc, argv, &rval, __2FLENGTH);
3865 JS_SET_RVAL(cx,vp,rval);
3872SFVec2fNormalize(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
3873 return SFVec2fGeneric(cx, obj, argc, argv, rval, __2FNORMALIZE);
3875SFVec2fNormalize(JSContext *cx, uintN argc, jsval *vp) {
3876 JSObject *obj = JS_THIS_OBJECT(cx,vp);
3877 jsval *argv = JS_ARGV(cx,vp);
3879 JSBool retval = SFVec2fGeneric(cx, obj, argc, argv, &rval, __2FNORMALIZE);
3880 JS_SET_RVAL(cx,vp,rval);
3887SFVec2fToString(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
3889SFVec2fToString(JSContext *cx, uintN argc, jsval *vp) {
3890 JSObject *obj = JS_THIS_OBJECT(cx,vp);
3891 jsval *argv = JS_ARGV(cx,vp);
3901 if ((ptr = (
AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
3902 printf(
"JS_GetPrivate failed in SFVec2fToString.\n");
3905 cc = ptr->v->sfvec2f.c;
3908 if ((ptr = (
SFVec2fNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
3909 printf(
"JS_GetPrivate failed in SFVec2fToString.\n");
3914 memset(buff, 0, STRING);
3915 sprintf(buff,
"%.9g %.9g",
3917 _str = JS_NewStringCopyZ(cx, buff);
3919 *rval = STRING_TO_JSVAL(_str);
3921 JS_SET_RVAL(cx,vp,STRING_TO_JSVAL(_str));
3929SFVec2fAssign(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
3931SFVec2fAssign(JSContext *cx, uintN argc, jsval *vp) {
3932 JSObject *obj = JS_THIS_OBJECT(cx,vp);
3933 jsval *argv = JS_ARGV(cx,vp);
3934 JSString *_id_jsstr;
3936 JSObject *_from_obj;
3941 if(SM_method() == 2){
3943 if ((lhs = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
3944 printf(
"JS_GetPrivate failed for obj in SFVec3dAssign.\n");
3947 if (!JSVAL_IS_OBJECT(*vp))
3949 if ((rhs = (
AnyNative *)JS_GetPrivateFw(cx, JSVAL_TO_OBJECT(*vp))) == NULL) {
3950 printf(
"JS_ConvertArguments failed in SFVec2fAssign. \n");
3953 AnyNativeAssign(lhs,rhs);
3957 if ((ptr = (
SFVec2fNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
3958 printf(
"JS_GetPrivate failed for obj in SFVec2fAssign.\n");
3962 CHECK_CLASS(cx,obj,argv,__FUNCTION__,SFVec2fClass)
3965 if (!JS_ConvertArguments(cx, argc, argv,
"o s", &_from_obj, &_id_str)) {
3967 if (JS_ConvertArguments(cx, argc, argv,
"oS", &_from_obj, &_id_jsstr) == JS_TRUE) {
3968 _id_str = JS_EncodeString(cx,_id_jsstr);
3971 printf(
"JS_ConvertArguments failed in SFVec2fAssign.\n");
3975 CHECK_CLASS(cx,_from_obj,argv,__FUNCTION__,SFVec2fClass)
3977 if ((fptr = (
SFVec2fNative *)JS_GetPrivateFw(cx, _from_obj)) == NULL) {
3978 printf(
"JS_GetPrivate failed for _from_obj in SFVec2fAssign.\n");
3981 #ifdef JSVRMLCLASSESVERBOSE
3982 printf(
"SFVec2fAssign: obj = %p, id = \"%s\", from = %p\n",
3983 obj, _id_str, _from_obj);
3986 SFVec2fNativeAssign(ptr, fptr);
3989 *rval = OBJECT_TO_JSVAL(obj);
3991 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
3999SFVec2fConstr(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
4001SFVec2fConstr(JSContext *cx, uintN argc, jsval *vp) {
4002 JSObject *obj = JS_NewObject(cx,&SFVec2fClass,NULL,NULL);
4003 jsval *argv = JS_ARGV(cx,vp);
4010 if(SM_method() == 2){
4012 if((any = (
AnyNative*)AnyNativeNew(FIELDTYPE_SFVec2f,NULL,NULL)) == NULL){
4013 printf(
"AnyfNativeNew failed in SFVec3fConstr.\n");
4016 if (!JS_SetPrivateFw(cx, obj, any)) {
4017 printf(
"JS_SetPrivate failed in SFVec2fConstr.\n");
4021 cc = any->v->sfvec2f.c;
4026 printf(
"SFVec2fNativeNew failed in SFVec2fConstr.\n");
4034 if (!JS_SetPrivateFw(cx, obj, ptr)) {
4035 printf(
"JS_SetPrivate failed in SFVec2fConstr.\n");
4039 ptr->valueChanged = 1;
4043 cc[0] = (float) 0.0;
4044 cc[1] = (float) 0.0;
4046 if (!JS_ConvertArguments(cx, argc, argv,
"d d", &(pars[0]), &(pars[1]))) {
4047 printf(
"JS_ConvertArguments failed in SFVec2fConstr.\n");
4050 cc[0] = (float) pars[0];
4051 cc[1] = (float) pars[1];
4053 #ifdef JSVRMLCLASSESVERBOSE
4054 printf(
"SFVec2fConstr: obj = %p, %u args, %f %f\n",
4056 (ptr->v).c[0], (ptr->v).c[1]);
4061 *rval = OBJECT_TO_JSVAL(obj);
4063 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
4071SFVec2fGetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp){
4072#elif JS_VERSION == 185
4073SFVec2fGetProperty(JSContext *cx, JSObject *obj, jsid iid, jsval *vp){
4075SFVec2fGetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSMutableHandleValue hvp){
4076 JSObject *obj = *hobj._;
4082#if JS_VERSION >= 185
4084 if (!JS_IdToValue(cx,iid,&
id)) {
4085 printf(
"JS_IdToValue failed in SFVec2fGetProperty.\n");
4092 if ((any = (
AnyNative *)JS_GetPrivateFw(cx,obj)) == NULL) {
4093 printf(
"JS_GetPrivate failed in SFVec2fGetProperty.\n");
4096 cc = any->v->sfvec2f.c;
4100 if ((ptr = (
SFVec2fNative *)JS_GetPrivateFw(cx,obj)) == NULL) {
4101 printf(
"JS_GetPrivate failed in SFVec2fGetProperty.\n");
4106 if (JSVAL_IS_INT(
id)) {
4107 switch (JSVAL_TO_INT(
id)) {
4110 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
4112 "JS_NewDouble failed for %f in SFVec2fGetProperty.\n",
4119 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
4121 "JS_NewDouble failed for %f in SFVec2fGetProperty.\n",
4133SFVec2fSetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp){
4134#elif JS_VERSION == 185
4135SFVec2fSetProperty(JSContext *cx, JSObject *obj, jsid iid, JSBool strict, jsval *vp){
4137SFVec2fSetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSBool strict, JSMutableHandleValue hvp){
4138 JSObject *obj = *hobj._;
4145#if JS_VERSION >= 185
4147 if (!JS_IdToValue(cx,iid,&
id)) {
4148 printf(
"JS_IdToValue failed in SFVec2fSetProperty.\n");
4153 if(SM_method() == 2){
4155 if ((any = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
4156 printf(
"JS_GetPrivate failed in SFVec2fSetProperty.\n");
4159 if(any->valueChanged)
4160 (*any->valueChanged)++;
4161 cc = any->v->sfvec2f.c;
4165 if ((ptr = (
SFVec2fNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
4166 printf(
"JS_GetPrivate failed in SFVec2fSetProperty.\n");
4169 ptr->valueChanged++;
4170 #ifdef JSVRMLCLASSESVERBOSE
4171 printf(
"SFVec2fSetProperty: obj = %p, id = %d, valueChanged = %d\n",
4172 obj, JSVAL_TO_INT(
id), ptr->valueChanged);
4176 if (!JS_ConvertValue(cx, *vp, JSTYPE_NUMBER, &myv)) {
4177 printf(
"JS_ConvertValue failed in SFVec2fSetProperty.\n");
4181 if (JSVAL_IS_INT(
id)) {
4182 switch (JSVAL_TO_INT(
id)) {
4185 cc[0] = (float) *JSVAL_TO_DOUBLE(myv);
4187 cc[0] = (float) JSVAL_TO_DOUBLE(myv);
4192 cc[1] = (float) *JSVAL_TO_DOUBLE(myv);
4194 cc[1] = (float) JSVAL_TO_DOUBLE(myv);
4213#define __3FNORMALIZE 8
4217JSBool SFVec3fGeneric( JSContext *cx, JSObject *obj,
4218 uintN argc, jsval *argv, jsval *rval,
int op) {
4219 JSObject *_paramObj, *_proto, *_retObj;
4226 float *cc, *cc2, cc3[3], cclhs[3];
4230 int SFParam = FALSE;
4231 int numParam = FALSE;
4234 int retSFVec3f = FALSE;
4235 int retNumeric = FALSE;
4243 #ifdef JSVRMLCLASSESVERBOSE
4244 printf (
"SFVec3fGeneric\n");
4248 if ((op==__3FADD)||(op==__3FDOT)||(op==__3FCROSS)||(op==__3FSUBT))SFParam=TRUE;
4249 if ((op==__3FDIVIDE)||(op==__3FMULT))numParam=TRUE;
4252 if ((op==__3FDOT)||(op==__3FLENGTH)) retNumeric = TRUE;
4253 retSFVec3f = (!retNumeric);
4257 param_isString = JSVAL_IS_STRING (*argv);
4260 if ((SFParam) || (numParam)) {
4262 if (!JSVAL_IS_NUMBER(argv[0])) {
4263 printf (
"SFVec3f param error - number expected\n");
4266 if (!JS_ValueToNumber(cx, argv[0], &d)) {
4267 printf(
"JS_ValueToNumber failed in SFVec3f.\n");
4273 if (param_isString) {
4274 _str = JS_ValueToString(cx, *argv);
4276 charString = JS_GetStringBytes(_str);
4278 charString = JS_EncodeString(cx,_str);
4281 if (sscanf(charString,
"%lf %lf %lf",
4282 &(pars[0]), &(pars[1]), &(pars[2])) != 3) {
4283 printf (
"conversion problem in SFVec3fGeneric\n");
4292 if(SM_method() == 2){
4293 if (JSVAL_IS_OBJECT(argv[0])) {
4295 if ((_vec2 = (
AnyNative *)JS_GetPrivateFw(cx, JSVAL_TO_OBJECT(argv[0]))) == NULL) {
4296 printf(
"in SFVec3d, RHS was NOT native type \n");
4300 cc2 = _vec2->v->sfvec3f.c;
4307 if (!JS_ConvertArguments(cx, argc, argv,
"o", &_paramObj)) {
4308 printf(
"JS_ConvertArguments failed in SFVec3f.\n");
4312 CHECK_CLASS(cx,_paramObj,argv,__FUNCTION__,SFVec3fClass)
4315 if ((_vec2 = (
SFVec3fNative*)JS_GetPrivateFw(cx, _paramObj)) == NULL) {
4316 printf(
"JS_GetPrivate failed for _paramObj in SFVec3f.\n");
4326 if(SM_method() == 2){
4328 if ((_vec1 = (
AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
4329 printf(
"JS_GetPrivate failed for obj in SFVec3fAdd.\n");
4332 cc = _vec1->v->sfvec3f.c;
4335 if ((_vec1 = (
SFVec3fNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
4336 printf(
"JS_GetPrivate failed for obj in SFVec3fAdd.\n");
4342 #ifdef JSVRMLCLASSESVERBOSE
4343 printf (
"SFVec3f generic, vec2 %f %f %f\n",pars[0],pars[1],pars[2]);
4349 vecadd3f(cclhs,cc,cc2);
4352 vecscale3f(cclhs,cc,1.0/d);
4355 vecscale3f(cclhs,cc,d);
4358 vecdif3f(cclhs,cc,cc2);
4361 d = vecdot3f(cc,cc2);
4364 veccross3f(cclhs,cc,cc2);
4367 d = veclength3f(cc);
4370 vecnormalize3f(cclhs,cc);
4373 vecnegate3f(cclhs,cc);
4376 printf (
"woops... %d\n",op);
4380 #ifdef JSVRMLCLASSESVERBOSE
4381 printf (
"past calcs\n");
4386 #ifdef JSVRMLCLASSESVERBOSE
4387 printf (
"returning SFVec3f\n");
4389 if ((_proto = JS_GetPrototypeFw(cx, obj)) == NULL) {
4390 printf(
"JS_GetPrototype failed in SFVec3f.\n");
4394 JS_ConstructObjectFw(cx, &SFVec3fClass, _proto, NULL)) == NULL) {
4395 printf(
"JS_ConstructObject failed in SFVec3f.\n");
4398 *rval = OBJECT_TO_JSVAL(_retObj);
4399 if(SM_method() == 2){
4401 if ((any = (
AnyNative*)JS_GetPrivateFw(cx, _retObj)) == NULL) {
4402 printf(
"JS_GetPrivate failed for _retObj in SFVec3f.\n");
4405 memcpy(any->v->sfvec3f.c,cclhs,3*
sizeof(
float));
4408 if ((_retNative = (
SFVec3fNative*)JS_GetPrivateFw(cx, _retObj)) == NULL) {
4409 printf(
"JS_GetPrivate failed for _retObj in SFVec3f.\n");
4412 memcpy(_retNative->v.c,cclhs,3*
sizeof(
float));
4414 }
else if (retNumeric) {
4415 if (JS_NewNumberValue(cx,d,rval) == JS_FALSE) {
4416 printf(
"JS_NewDouble failed for %f in SFVec3f.\n",d);
4420 #ifdef JSVRMLCLASSESVERBOSE
4422 printf(
"SFVec3fgeneric: obj = %p, result = [%.9g, %.9g, %.9g]\n",
4424 (_retNative->v).c[0], (_retNative->v).c[1],
4425 (_retNative->v).c[2]);
4428 printf(
"SFVec2fgeneric: obj = %p, result = %.9g\n",
4437SFVec3fAdd(JSContext *cx, JSObject *obj,
4438 uintN argc, jsval *argv, jsval *rval) {
4439 return SFVec3fGeneric(cx, obj, argc, argv, rval, __3FADD);
4441SFVec3fAdd(JSContext *cx, uintN argc, jsval *vp) {
4442 JSObject *obj = JS_THIS_OBJECT(cx,vp);
4443 jsval *argv = JS_ARGV(cx,vp);
4445 JSBool retval = SFVec3fGeneric(cx, obj, argc, argv, &rval, __3FADD);
4446 JS_SET_RVAL(cx,vp,rval);
4453SFVec3fCross(JSContext *cx, JSObject *obj,
4454 uintN argc, jsval *argv, jsval *rval) {
4455 return SFVec3fGeneric(cx, obj, argc, argv, rval, __3FCROSS);
4457SFVec3fCross(JSContext *cx, uintN argc, jsval *vp) {
4458 JSObject *obj = JS_THIS_OBJECT(cx,vp);
4459 jsval *argv = JS_ARGV(cx,vp);
4461 JSBool retval = SFVec3fGeneric(cx, obj, argc, argv, &rval, __3FCROSS);
4462 JS_SET_RVAL(cx,vp,rval);
4469SFVec3fDivide(JSContext *cx, JSObject *obj,
4470 uintN argc, jsval *argv, jsval *rval) {
4471 return SFVec3fGeneric(cx, obj, argc, argv, rval, __3FDIVIDE);
4473SFVec3fDivide(JSContext *cx, uintN argc, jsval *vp) {
4474 JSObject *obj = JS_THIS_OBJECT(cx,vp);
4475 jsval *argv = JS_ARGV(cx,vp);
4477 JSBool retval = SFVec3fGeneric(cx, obj, argc, argv, &rval, __3FDIVIDE);
4478 JS_SET_RVAL(cx,vp,rval);
4485SFVec3fDot(JSContext *cx, JSObject *obj,
4486 uintN argc, jsval *argv, jsval *rval) {
4487 return SFVec3fGeneric(cx, obj, argc, argv, rval, __3FDOT);
4489SFVec3fDot(JSContext *cx, uintN argc, jsval *vp) {
4490 JSObject *obj = JS_THIS_OBJECT(cx,vp);
4491 jsval *argv = JS_ARGV(cx,vp);
4493 JSBool retval = SFVec3fGeneric(cx, obj, argc, argv, &rval, __3FDOT);
4494 JS_SET_RVAL(cx,vp,rval);
4501SFVec3fLength(JSContext *cx, JSObject *obj,
4502 uintN argc, jsval *argv, jsval *rval) {
4503 return SFVec3fGeneric(cx, obj, argc, argv, rval, __3FLENGTH);
4505SFVec3fLength(JSContext *cx, uintN argc, jsval *vp) {
4506 JSObject *obj = JS_THIS_OBJECT(cx,vp);
4507 jsval *argv = JS_ARGV(cx,vp);
4509 JSBool retval = SFVec3fGeneric(cx, obj, argc, argv, &rval, __3FLENGTH);
4510 JS_SET_RVAL(cx,vp,rval);
4518SFVec3fMultiply(JSContext *cx, JSObject *obj,
4519 uintN argc, jsval *argv, jsval *rval) {
4520 return SFVec3fGeneric(cx, obj, argc, argv, rval, __3FMULT);
4522SFVec3fMultiply(JSContext *cx, uintN argc, jsval *vp) {
4523 JSObject *obj = JS_THIS_OBJECT(cx,vp);
4524 jsval *argv = JS_ARGV(cx,vp);
4526 JSBool retval = SFVec3fGeneric(cx, obj, argc, argv, &rval, __3FMULT);
4527 JS_SET_RVAL(cx,vp,rval);
4535SFVec3fNegate(JSContext *cx, JSObject *obj,
4536 uintN argc, jsval *argv, jsval *rval) {
4537 return SFVec3fGeneric(cx, obj, argc, argv, rval, __3FNEGATE);
4539SFVec3fNegate(JSContext *cx, uintN argc, jsval *vp) {
4540 JSObject *obj = JS_THIS_OBJECT(cx,vp);
4541 jsval *argv = JS_ARGV(cx,vp);
4543 JSBool retval = SFVec3fGeneric(cx, obj, argc, argv, &rval, __3FNEGATE);
4544 JS_SET_RVAL(cx,vp,rval);
4551SFVec3fNormalize(JSContext *cx, JSObject *obj,
4552 uintN argc, jsval *argv, jsval *rval) {
4553 return SFVec3fGeneric(cx, obj, argc, argv, rval, __3FNORMALIZE);
4555SFVec3fNormalize(JSContext *cx, uintN argc, jsval *vp) {
4556 JSObject *obj = JS_THIS_OBJECT(cx,vp);
4557 jsval *argv = JS_ARGV(cx,vp);
4559 JSBool retval = SFVec3fGeneric(cx, obj, argc, argv, &rval, __3FNORMALIZE);
4560 JS_SET_RVAL(cx,vp,rval);
4567SFVec3fSubtract(JSContext *cx, JSObject *obj,
4568 uintN argc, jsval *argv, jsval *rval) {
4569 return SFVec3fGeneric(cx, obj, argc, argv, rval, __3FSUBT);
4571SFVec3fSubtract(JSContext *cx, uintN argc, jsval *vp) {
4572 JSObject *obj = JS_THIS_OBJECT(cx,vp);
4573 jsval *argv = JS_ARGV(cx,vp);
4575 JSBool retval = SFVec3fGeneric(cx, obj, argc, argv, &rval, __3FSUBT);
4576 JS_SET_RVAL(cx,vp,rval);
4583SFVec3fToString(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
4585SFVec3fToString(JSContext *cx, uintN argc, jsval *vp) {
4586 JSObject *obj = JS_THIS_OBJECT(cx,vp);
4587 jsval *argv = JS_ARGV(cx,vp);
4597 if ((ptr = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
4598 printf(
"JS_GetPrivate failed in SFVec3fToString.\n");
4601 cc = ptr->v->sfvec3f.c;
4604 if ((ptr = (
SFVec3fNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
4605 printf(
"JS_GetPrivate failed in SFVec3fToString.\n");
4610 memset(buff, 0, STRING);
4611 sprintf(buff,
"%.9g %.9g %.9g",
4612 cc[0], cc[1], cc[2]);
4613 _str = JS_NewStringCopyZ(cx, buff);
4616 *rval = STRING_TO_JSVAL(_str);
4618 JS_SET_RVAL(cx,vp,STRING_TO_JSVAL(_str));
4621 #ifdef JSVRMLCLASSESVERBOSE
4622 printf (
"SFVec3fToString, string is :%s:\n",buff);
4631SFVec3fAssign(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
4633SFVec3fAssign(JSContext *cx, uintN argc, jsval *vp) {
4634 JSObject *obj = JS_THIS_OBJECT(cx,vp);
4635 jsval *argv = JS_ARGV(cx,vp);
4636 JSString *_id_jsstr;
4638 JSObject *_from_obj;
4644 #ifdef JSVRMLCLASSESVERBOSE
4645 printf (
"start of SFVec3fAssign\n");
4648 if(SM_method() == 2){
4650 if ((lhs = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
4651 printf(
"JS_GetPrivate failed for obj in SFVec3dAssign.\n");
4654 if (!JSVAL_IS_OBJECT(*vp))
4656 if ((rhs = (
AnyNative *)JS_GetPrivateFw(cx, JSVAL_TO_OBJECT(*vp))) == NULL) {
4657 printf(
"JS_ConvertArguments failed in SFVec3fAssign. \n");
4660 AnyNativeAssign(lhs,rhs);
4663 if ((ptr = (
SFVec3fNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
4664 printf(
"JS_GetPrivate failed for obj in SFVec3fAssign.\n");
4668 CHECK_CLASS(cx,obj,argv,__FUNCTION__,SFVec3fClass)
4671 if (!JS_ConvertArguments(cx, argc, argv,
"o s", &_from_obj, &_id_str)) {
4673 if (JS_ConvertArguments(cx, argc, argv,
"oS", &_from_obj, &_id_jsstr)) {
4674 _id_str = JS_EncodeString(cx,_id_jsstr);
4677 printf(
"JS_ConvertArguments failed in SFVec3fAssign.\n");
4681 CHECK_CLASS(cx,_from_obj,argv,__FUNCTION__,SFVec3fClass)
4683 if ((fptr = (
SFVec3fNative *)JS_GetPrivateFw(cx, _from_obj)) == NULL) {
4684 printf(
"JS_GetPrivate failed for _from_obj in SFVec3fAssign.\n");
4687 #ifdef JSVRMLCLASSESVERBOSE
4688 printf(
"SFVec3fAssign: obj = %p, id = \"%s\", from = %p\n",
4689 obj, _id_str, _from_obj);
4692 SFVec3fNativeAssign(ptr, fptr);
4695 *rval = OBJECT_TO_JSVAL(obj);
4697 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
4700 #ifdef JSVRMLCLASSESVERBOSE
4701 printf (
"end of SFVec3fAssign\n");
4709SFVec3fConstr(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
4711SFVec3fConstr(JSContext *cx, uintN argc, jsval *vp) {
4712 JSObject *obj = JS_NewObject(cx,&SFVec3fClass,NULL,NULL);
4713 jsval *argv = JS_ARGV(cx,vp);
4718 #ifdef JSVRMLCLASSESVERBOSE
4719 printf (
"start of SFVec3fConstr\n");
4723 if(SM_method() == 2){
4725 if((any = (
AnyNative*)AnyNativeNew(FIELDTYPE_SFVec3f,NULL,NULL)) == NULL){
4726 printf(
"AnyfNativeNew failed in SFVec3fConstr.\n");
4729 if (!JS_SetPrivateFw(cx, obj, any)) {
4730 printf(
"JS_SetPrivate failed in SFVec3fConstr.\n");
4733 cc = any->v->sfvec3f.c;
4737 printf(
"SFVec3fNativeNew failed in SFVec3fConstr.\n");
4745 if (!JS_SetPrivateFw(cx, obj, ptr)) {
4746 printf(
"JS_SetPrivate failed in SFVec3fConstr.\n");
4749 ptr->valueChanged = 1;
4756 }
else if(argc == 1){
4757 if(SM_method() == 2){
4759 if (JSVAL_IS_OBJECT(argv[0])) {
4761 if ((rhs = (
AnyNative *)JS_GetPrivateFw(cx, JSVAL_TO_OBJECT(argv[0]))) != NULL) {
4763 int rhstype = rhs->type;
4766 case FIELDTYPE_SFVec3f:
4767 veccopy3f(cc,anyv->sfvec3f.c);
break;
4768 case FIELDTYPE_SFVec3d:
4769 double2float(cc,anyv->sfvec3d.c,3);
break;
4770 case FIELDTYPE_SFRotation:
4771 veccopy3f(cc,anyv->sfrotation.c);
break;
4773 vecset3f(cc,0.0f,0.0f,0.0f);
4774 ConsoleMessage(
"new SFVec3f( obj ) doesn't handle obj type %d\n",rhstype);
4783 if (!JS_ConvertArguments(cx, argc, argv,
"d d d",
4784 &(pars[0]), &(pars[1]), &(pars[2]))) {
4785 printf(
"JS_ConvertArguments failed in SFVec3fConstr.\n");
4788 cc[0] = (float) pars[0];
4789 cc[1] = (float) pars[1];
4790 cc[2] = (float) pars[2];
4792 #ifdef JSVRMLCLASSESVERBOSE
4793 printf(
"SFVec3fConstr: obj = %p, %u args, %f %f %f\n",
4795 cc[0], cc[1], cc[2]);
4800 *rval = OBJECT_TO_JSVAL(obj);
4802 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
4809SFVec3fGetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp){
4810#elif JS_VERSION == 185
4811SFVec3fGetProperty(JSContext *cx, JSObject *obj, jsid iid, jsval *vp){
4813SFVec3fGetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSMutableHandleValue hvp){
4814 JSObject *obj = *hobj._;
4820 #ifdef JSVRMLCLASSESVERBOSE
4824#if JS_VERSION >= 185
4826 if (!JS_IdToValue(cx,iid,&
id)) {
4827 printf(
"JS_IdToValue failed in SFVec3fGetProperty.\n");
4832 #ifdef JSVRMLCLASSESVERBOSE
4840 _idStr = JS_ValueToString(cx, *vp);
4842 _id_c = JS_GetStringBytes(_idStr);
4844 _id_c = JS_EncodeString(cx,_idStr);
4849 if ((any = (
AnyNative *)JS_GetPrivateFw(cx,obj)) == NULL) {
4850 printf(
"JS_GetPrivate failed in SFVec3fGetProperty.\n");
4853 cc = any->v->sfvec3f.c;
4856 if ((ptr = (
SFVec3fNative *)JS_GetPrivateFw(cx,obj)) == NULL) {
4857 printf(
"JS_GetPrivate failed in SFVec3fGetProperty.\n");
4862 if (JSVAL_IS_INT(
id)) {
4863 switch (JSVAL_TO_INT(
id)) {
4866 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
4868 "JS_NewDouble failed for %f in SFVec3fGetProperty.\n",
4875 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
4877 "JS_NewDouble failed for %f in SFVec3fGetProperty.\n",
4884 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
4886 "JS_NewDouble failed for %f in SFVec3fGetProperty.\n",
4893 #ifdef JSVRMLCLASSESVERBOSE
4894 printf (
"SFVec3fGetProperty, id is NOT an int...\n");
4903SFVec3fSetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp){
4904#elif JS_VERSION == 185
4905SFVec3fSetProperty(JSContext *cx, JSObject *obj, jsid iid, JSBool strict, jsval *vp){
4907SFVec3fSetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSBool strict, JSMutableHandleValue hvp){
4908 JSObject *obj = *hobj._;
4914#if JS_VERSION >= 185
4916 if (!JS_IdToValue(cx,iid,&
id)) {
4917 printf(
"JS_IdToValue failed in SFVec3fSetProperty.\n");
4922 if(SM_method() == 2){
4924 if ((any = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
4925 printf(
"JS_GetPrivate failed in SFVec3fSetProperty.\n");
4928 if(any->valueChanged)
4929 (*any->valueChanged)++;
4930 cc = any->v->sfvec3f.c;
4933 if ((ptr = (
SFVec3fNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
4934 printf(
"JS_GetPrivate failed in SFVec3fSetProperty.\n");
4937 ptr->valueChanged++;
4938 #ifdef JSVRMLCLASSESVERBOSE
4939 printf(
"SFVec3fSetProperty: obj = %p, id = %d, valueChanged = %d\n",
4940 obj, JSVAL_TO_INT(
id), ptr->valueChanged);
4944 if (!JS_ConvertValue(cx, *vp, JSTYPE_NUMBER, &myv)) {
4945 printf(
"JS_ConvertValue failed in SFVec3fSetProperty.\n");
4949 if (JSVAL_IS_INT(
id)) {
4950 switch (JSVAL_TO_INT(
id)) {
4953 cc[0] = (float) *JSVAL_TO_DOUBLE(myv);
4955 cc[0] = (float) JSVAL_TO_DOUBLE(myv);
4960 cc[1] = (float) *JSVAL_TO_DOUBLE(myv);
4962 cc[1] = (float) JSVAL_TO_DOUBLE(myv);
4967 cc[2] = (float) *JSVAL_TO_DOUBLE(myv);
4969 cc[2] = (float) JSVAL_TO_DOUBLE(myv);
4991JSBool SFVec3dGeneric( JSContext *cx, JSObject *obj,
4992 uintN argc, jsval *argv, jsval *rval,
int op) {
4993 JSObject *_paramObj, *_proto, *_retObj;
4999 double *cc, *cc2, cc3[3], cclhs[3];
5004 int SFParam = FALSE;
5005 int numParam = FALSE;
5008 int retSFVec3d = FALSE;
5009 int retNumeric = FALSE;
5018 if ((op==__3FADD)||(op==__3FDOT)||(op==__3FCROSS)||(op==__3FSUBT))SFParam=TRUE;
5019 if ((op==__3FDIVIDE)||(op==__3FMULT))numParam=TRUE;
5022 if ((op==__3FDOT)||(op==__3FLENGTH)) retNumeric = TRUE;
5023 retSFVec3d = (!retNumeric);
5027 param_isString = JSVAL_IS_STRING (*argv);
5030 if ((SFParam) || (numParam)) {
5032 if (!JSVAL_IS_NUMBER(argv[0])) {
5033 printf (
"SFVec3d param error - number expected\n");
5036 if (!JS_ValueToNumber(cx, argv[0], &d)) {
5037 printf(
"JS_ValueToNumber failed in SFVec3d.\n");
5043 if (param_isString) {
5044 _str = JS_ValueToString(cx, *argv);
5046 charString = JS_GetStringBytes(_str);
5048 charString = JS_EncodeString(cx,_str);
5051 if (sscanf(charString,
"%lf %lf %lf",
5052 &(pars[0]), &(pars[1]), &(pars[2])) != 3) {
5053 printf (
"conversion problem in SFVec3dGeneric\n");
5062 if(SM_method() == 2){
5063 if (JSVAL_IS_OBJECT(argv[0])) {
5065 if ((_vec2 = (
AnyNative *)JS_GetPrivateFw(cx, JSVAL_TO_OBJECT(argv[0]))) == NULL) {
5066 printf(
"in SFVec3d, RHS was NOT native type \n");
5069 cc2 = _vec2->v->sfvec3d.c;
5075 if (!JS_ConvertArguments(cx, argc, argv,
"o", &_paramObj)) {
5076 printf(
"JS_ConvertArguments failed in SFVec3d.\n");
5080 CHECK_CLASS(cx,_paramObj,argv,__FUNCTION__,SFVec3dClass)
5083 if ((_vec2 = (
SFVec3dNative*)JS_GetPrivateFw(cx, _paramObj)) == NULL) {
5084 printf(
"JS_GetPrivate failed for _paramObj in SFVec3d.\n");
5095 if(SM_method() == 2){
5097 if ((_vec1 = (
AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
5098 printf(
"JS_GetPrivate failed for obj in SFVec3dAdd.\n");
5101 cc = _vec1->v->sfvec3d.c;
5104 if ((_vec1 = (
SFVec3dNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
5105 printf(
"JS_GetPrivate failed for obj in SFVec3dAdd.\n");
5111 #ifdef JSVRMLCLASSESVERBOSE
5112 printf (
"SFVec3d generic, vec2 %f %f %f\n",pars[0],pars[1],pars[2]);
5118 vecaddd(cclhs,cc,cc2);
5121 vecscaled(cclhs,cc,1.0/d);
5124 vecscaled(cclhs,cc,d);
5127 vecdifd(cclhs,cc,cc2);
5130 d = vecdotd(cc,cc2);
5133 veccrossd(cclhs,cc,cc2);
5139 vecnormald(cclhs,cc);
5142 vecnegated(cclhs,cc);
5145 printf (
"woops... %d\n",op);
5149 #ifdef JSVRMLCLASSESVERBOSE
5150 printf (
"past calcs\n");
5155 #ifdef JSVRMLCLASSESVERBOSE
5156 printf (
"returning SFVec3d\n");
5158 if ((_proto = JS_GetPrototypeFw(cx, obj)) == NULL) {
5159 printf(
"JS_GetPrototype failed in SFVec3d.\n");
5163 JS_ConstructObjectFw(cx, &SFVec3dClass, _proto, NULL)) == NULL) {
5164 printf(
"JS_ConstructObject failed in SFVec3d.\n");
5167 *rval = OBJECT_TO_JSVAL(_retObj);
5168 if(SM_method() == 2){
5170 if ((any = (
AnyNative*)JS_GetPrivateFw(cx, _retObj)) == NULL) {
5171 printf(
"JS_GetPrivate failed for _retObj in SFVec3d.\n");
5174 memcpy(any->v->sfvec3d.c,cclhs,
sizeof(
double)*3);
5177 if ((_retNative = (
SFVec3dNative*)JS_GetPrivateFw(cx, _retObj)) == NULL) {
5178 printf(
"JS_GetPrivate failed for _retObj in SFVec3d.\n");
5181 memcpy(_retNative->v.c,cclhs,3*
sizeof(
double));
5183 }
else if (retNumeric) {
5184 if (JS_NewNumberValue(cx,d,rval) == JS_FALSE) {
5185 printf(
"JS_NewDouble failed for %f in SFVec3d.\n",d);
5189 #ifdef JSVRMLCLASSESVERBOSE
5191 printf(
"SFVec3dgeneric: obj = %p, result = [%.9g, %.9g, %.9g]\n",
5193 (_retNative->v).c[0], (_retNative->v).c[1],
5194 (_retNative->v).c[2]);
5197 printf(
"SFVec2fgeneric: obj = %p, result = %.9g\n",
5207SFVec3dAdd(JSContext *cx, JSObject *obj,
5208 uintN argc, jsval *argv, jsval *rval) {
5209 return SFVec3dGeneric(cx, obj, argc, argv, rval, __3FADD);
5211SFVec3dAdd(JSContext *cx, uintN argc, jsval *vp) {
5212 JSObject *obj = JS_THIS_OBJECT(cx,vp);
5213 jsval *argv = JS_ARGV(cx,vp);
5215 JSBool retval = SFVec3dGeneric(cx, obj, argc, argv, &rval, __3FADD);
5216 JS_SET_RVAL(cx,vp,rval);
5223SFVec3dCross(JSContext *cx, JSObject *obj,
5224 uintN argc, jsval *argv, jsval *rval) {
5225 return SFVec3dGeneric(cx, obj, argc, argv, rval, __3FCROSS);
5227SFVec3dCross(JSContext *cx, uintN argc, jsval *vp) {
5228 JSObject *obj = JS_THIS_OBJECT(cx,vp);
5229 jsval *argv = JS_ARGV(cx,vp);
5231 JSBool retval = SFVec3dGeneric(cx, obj, argc, argv, &rval, __3FCROSS);
5232 JS_SET_RVAL(cx,vp,rval);
5239SFVec3dDivide(JSContext *cx, JSObject *obj,
5240 uintN argc, jsval *argv, jsval *rval) {
5241 return SFVec3dGeneric(cx, obj, argc, argv, rval, __3FDIVIDE);
5243SFVec3dDivide(JSContext *cx, uintN argc, jsval *vp) {
5244 JSObject *obj = JS_THIS_OBJECT(cx,vp);
5245 jsval *argv = JS_ARGV(cx,vp);
5247 JSBool retval = SFVec3dGeneric(cx, obj, argc, argv, &rval, __3FDIVIDE);
5248 JS_SET_RVAL(cx,vp,rval);
5255SFVec3dDot(JSContext *cx, JSObject *obj,
5256 uintN argc, jsval *argv, jsval *rval) {
5257 return SFVec3dGeneric(cx, obj, argc, argv, rval, __3FDOT);
5259SFVec3dDot(JSContext *cx, uintN argc, jsval *vp) {
5260 JSObject *obj = JS_THIS_OBJECT(cx,vp);
5261 jsval *argv = JS_ARGV(cx,vp);
5263 JSBool retval = SFVec3dGeneric(cx, obj, argc, argv, &rval, __3FDOT);
5264 JS_SET_RVAL(cx,vp,rval);
5271SFVec3dLength(JSContext *cx, JSObject *obj,
5272 uintN argc, jsval *argv, jsval *rval) {
5273 return SFVec3dGeneric(cx, obj, argc, argv, rval, __3FLENGTH);
5275SFVec3dLength(JSContext *cx, uintN argc, jsval *vp) {
5276 JSObject *obj = JS_THIS_OBJECT(cx,vp);
5277 jsval *argv = JS_ARGV(cx,vp);
5279 JSBool retval = SFVec3dGeneric(cx, obj, argc, argv, &rval, __3FLENGTH);
5280 JS_SET_RVAL(cx,vp,rval);
5288SFVec3dMultiply(JSContext *cx, JSObject *obj,
5289 uintN argc, jsval *argv, jsval *rval) {
5290 return SFVec3dGeneric(cx, obj, argc, argv, rval, __3FMULT);
5292SFVec3dMultiply(JSContext *cx, uintN argc, jsval *vp) {
5293 JSObject *obj = JS_THIS_OBJECT(cx,vp);
5294 jsval *argv = JS_ARGV(cx,vp);
5296 JSBool retval = SFVec3dGeneric(cx, obj, argc, argv, &rval, __3FMULT);
5297 JS_SET_RVAL(cx,vp,rval);
5305SFVec3dNegate(JSContext *cx, JSObject *obj,
5306 uintN argc, jsval *argv, jsval *rval) {
5307 return SFVec3dGeneric(cx, obj, argc, argv, rval, __3FNEGATE);
5309SFVec3dNegate(JSContext *cx, uintN argc, jsval *vp) {
5310 JSObject *obj = JS_THIS_OBJECT(cx,vp);
5311 jsval *argv = JS_ARGV(cx,vp);
5313 JSBool retval = SFVec3dGeneric(cx, obj, argc, argv, &rval, __3FNEGATE);
5314 JS_SET_RVAL(cx,vp,rval);
5321SFVec3dNormalize(JSContext *cx, JSObject *obj,
5322 uintN argc, jsval *argv, jsval *rval) {
5323 return SFVec3dGeneric(cx, obj, argc, argv, rval, __3FNORMALIZE);
5325SFVec3dNormalize(JSContext *cx, uintN argc, jsval *vp) {
5326 JSObject *obj = JS_THIS_OBJECT(cx,vp);
5327 jsval *argv = JS_ARGV(cx,vp);
5329 JSBool retval = SFVec3dGeneric(cx, obj, argc, argv, &rval, __3FNORMALIZE);
5330 JS_SET_RVAL(cx,vp,rval);
5337SFVec3dSubtract(JSContext *cx, JSObject *obj,
5338 uintN argc, jsval *argv, jsval *rval) {
5339 return SFVec3dGeneric(cx, obj, argc, argv, rval, __3FSUBT);
5341SFVec3dSubtract(JSContext *cx, uintN argc, jsval *vp) {
5342 JSObject *obj = JS_THIS_OBJECT(cx,vp);
5343 jsval *argv = JS_ARGV(cx,vp);
5345 JSBool retval = SFVec3dGeneric(cx, obj, argc, argv, &rval, __3FSUBT);
5346 JS_SET_RVAL(cx,vp,rval);
5353SFVec3dToString(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
5355SFVec3dToString(JSContext *cx, uintN argc, jsval *vp) {
5356 JSObject *obj = JS_THIS_OBJECT(cx,vp);
5357 jsval *argv = JS_ARGV(cx,vp);
5367 if ((ptr = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
5368 printf(
"JS_GetPrivate failed in SFVec3dToString.\n");
5371 cc = ptr->v->sfvec3d.c;
5374 if ((ptr = (
SFVec3dNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
5375 printf(
"JS_GetPrivate failed in SFVec3dToString.\n");
5380 memset(buff, 0, STRING);
5381 sprintf(buff,
"%.9g %.9g %.9g",
5382 cc[0], cc[1], cc[2]);
5383 _str = JS_NewStringCopyZ(cx, buff);
5385 *rval = STRING_TO_JSVAL(_str);
5387 JS_SET_RVAL(cx,vp,STRING_TO_JSVAL(_str));
5390 #ifdef JSVRMLCLASSESVERBOSE
5391 printf (
"SFVec3dToString, string is :%s:\n",buff);
5399SFVec3dAssign(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
5401SFVec3dAssign(JSContext *cx, uintN argc, jsval *vp) {
5402 JSObject *obj = JS_THIS_OBJECT(cx,vp);
5403 jsval *argv = JS_ARGV(cx,vp);
5404 JSString *_id_jsstr;
5406 JSObject *_from_obj;
5413 #ifdef JSVRMLCLASSESVERBOSE
5414 printf (
"start of SFVec3dAssign\n");
5416 if(SM_method() == 2){
5418 if ((lhs = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
5419 printf(
"JS_GetPrivate failed for obj in SFVec3dAssign.\n");
5422 if (!JSVAL_IS_OBJECT(*vp))
5424 if ((rhs = (
AnyNative *)JS_GetPrivateFw(cx, JSVAL_TO_OBJECT(*vp))) == NULL) {
5425 printf(
"in setECMANative, RHS was NOT native type \n");
5428 AnyNativeAssign(lhs,rhs);
5433 if ((ptr = (
SFVec3dNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
5434 printf(
"JS_GetPrivate failed for obj in SFVec3dAssign.\n");
5438 CHECK_CLASS(cx,obj,argv,__FUNCTION__,SFVec3dClass)
5441 if (!JS_ConvertArguments(cx, argc, argv,
"o s", &_from_obj, &_id_str)) {
5443 if (JS_ConvertArguments(cx, argc, argv,
"oS", &_from_obj, &_id_jsstr) == JS_TRUE) {
5444 _id_str = JS_EncodeString(cx,_id_jsstr);
5447 printf(
"JS_ConvertArguments failed in SFVec3dAssign.\n");
5451 CHECK_CLASS(cx,_from_obj,argv,__FUNCTION__,SFVec3dClass)
5453 if ((fptr = (
SFVec3dNative *)JS_GetPrivateFw(cx, _from_obj)) == NULL) {
5454 printf(
"JS_GetPrivate failed for _from_obj in SFVec3dAssign.\n");
5457 #ifdef JSVRMLCLASSESVERBOSE
5458 printf(
"SFVec3dAssign: obj = %p, id = \"%s\", from = %p\n",
5459 obj, _id_str, _from_obj);
5462 SFVec3dNativeAssign(ptr, fptr);
5466 *rval = OBJECT_TO_JSVAL(obj);
5468 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
5471 #ifdef JSVRMLCLASSESVERBOSE
5472 printf (
"end of SFVec3dAssign\n");
5480SFVec3dConstr(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
5482SFVec3dConstr(JSContext *cx, uintN argc, jsval *vp) {
5483 JSObject *obj = JS_NewObject(cx,&SFVec3dClass,NULL,NULL);
5484 jsval *argv = JS_ARGV(cx,vp);
5489 #ifdef JSVRMLCLASSESVERBOSE
5490 printf (
"start of SFVec3dConstr\n");
5495 if(SM_method() == 2){
5497 if ((any = (
AnyNative *) AnyNativeNew(FIELDTYPE_SFVec3d,NULL,NULL)) == NULL) {
5498 printf(
"SFVec3dNativeNew failed in SFVec3dConstr.\n");
5502 if (!JS_SetPrivateFw(cx, obj, any)) {
5503 printf(
"JS_SetPrivate failed in SFVec3dConstr.\n");
5506 cc = any->v->sfvec3d.c;
5510 printf(
"SFVec3dNativeNew failed in SFVec3dConstr.\n");
5518 if (!JS_SetPrivateFw(cx, obj, ptr)) {
5519 printf(
"JS_SetPrivate failed in SFVec3dConstr.\n");
5523 ptr->valueChanged = 1;
5526 cc[0] = (float) 0.0;
5527 cc[1] = (float) 0.0;
5528 cc[2] = (float) 0.0;
5530 if (!JS_ConvertArguments(cx, argc, argv,
"d d d",
5531 &(pars[0]), &(pars[1]), &(pars[2]))) {
5532 printf(
"JS_ConvertArguments failed in SFVec3dConstr.\n");
5535 cc[0] = (float) pars[0];
5536 cc[1] = (float) pars[1];
5537 cc[2] = (float) pars[2];
5539 #ifdef JSVRMLCLASSESVERBOSE
5540 printf(
"SFVec3dConstr: obj = %p, %u args, %f %f %f\n",
5542 (ptr->v).c[0], (ptr->v).c[1], (ptr->v).c[2]);
5547 *rval = OBJECT_TO_JSVAL(obj);
5549 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
5556SFVec3dGetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp){
5557#elif JS_VERSION == 185
5558SFVec3dGetProperty(JSContext *cx, JSObject *obj, jsid iid, jsval *vp){
5560SFVec3dGetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSMutableHandleValue hvp){
5561 JSObject *obj = *hobj._;
5567 #ifdef JSVRMLCLASSESVERBOSE
5571#if JS_VERSION >= 185
5573 if (!JS_IdToValue(cx,iid,&
id)) {
5574 printf(
"JS_IdToValue failed in SFVec3dGetProperty.\n");
5579 #ifdef JSVRMLCLASSESVERBOSE
5585 _idStr = JS_ValueToString(cx, *vp);
5587 _id_c = JS_GetStringBytes(_idStr);
5589 _id_c = JS_EncodeString(cx,_idStr);
5595 if ((ptr = (
AnyNative *)JS_GetPrivateFw(cx,obj)) == NULL) {
5596 printf(
"JS_GetPrivate failed in SFVec3dGetProperty.\n");
5599 cc = ptr->v->sfvec3d.c;
5602 if ((ptr = (
SFVec3dNative *)JS_GetPrivateFw(cx,obj)) == NULL) {
5603 printf(
"JS_GetPrivate failed in SFVec3dGetProperty.\n");
5608 if (JSVAL_IS_INT(
id)) {
5609 switch (JSVAL_TO_INT(
id)) {
5612 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
5614 "JS_NewDouble failed for %f in SFVec3dGetProperty.\n",
5621 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
5623 "JS_NewDouble failed for %f in SFVec3dGetProperty.\n",
5630 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
5632 "JS_NewDouble failed for %f in SFVec3dGetProperty.\n",
5639 #ifdef JSVRMLCLASSESVERBOSE
5640 printf (
"SFVec3dGetProperty, id is NOT an int...\n");
5649SFVec3dSetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp){
5650#elif JS_VERSION == 185
5651SFVec3dSetProperty(JSContext *cx, JSObject *obj, jsid iid, JSBool strict, jsval *vp){
5653SFVec3dSetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSBool strict, JSMutableHandleValue hvp){
5654 JSObject *obj = *hobj._;
5660#if JS_VERSION >= 185
5662 if (!JS_IdToValue(cx,iid,&
id)) {
5663 printf(
"JS_IdToValue failed in SFVec3dSetProperty.\n");
5670 if ((ptr = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
5671 printf(
"JS_GetPrivate failed in SFVec3dSetProperty.\n");
5674 if(ptr->valueChanged)
5675 (*ptr->valueChanged)++;
5676 #ifdef JSVRMLCLASSESVERBOSE
5677 printf(
"SFVec3dSetProperty: obj = %p, id = %d, valueChanged = %d\n",
5678 obj, JSVAL_TO_INT(
id), ptr->valueChanged);
5680 cc = ptr->v->sfvec3d.c;
5683 if ((ptr = (
SFVec3dNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
5684 printf(
"JS_GetPrivate failed in SFVec3dSetProperty.\n");
5687 ptr->valueChanged++;
5688 #ifdef JSVRMLCLASSESVERBOSE
5689 printf(
"SFVec3dSetProperty: obj = %p, id = %d, valueChanged = %d\n",
5690 obj, JSVAL_TO_INT(
id), ptr->valueChanged);
5694 if (!JS_ConvertValue(cx, *vp, JSTYPE_NUMBER, &myv)) {
5695 printf(
"JS_ConvertValue failed in SFVec3dSetProperty.\n");
5699 if (JSVAL_IS_INT(
id)) {
5700 switch (JSVAL_TO_INT(
id)) {
5703 cc[0] = *JSVAL_TO_DOUBLE(myv);
5705 cc[0] = JSVAL_TO_DOUBLE(myv);
5710 cc[1] = *JSVAL_TO_DOUBLE(myv);
5712 cc[1] = JSVAL_TO_DOUBLE(myv);
5717 cc[2] = *JSVAL_TO_DOUBLE(myv);
5719 cc[2] = JSVAL_TO_DOUBLE(myv);
5730SFVec4fToString(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
5732SFVec4fToString(JSContext *cx, uintN argc, jsval *vp) {
5733 JSObject *obj = JS_THIS_OBJECT(cx,vp);
5734 jsval *argv = JS_ARGV(cx,vp);
5744 if ((ptr = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
5745 printf(
"JS_GetPrivate failed in SFVec4fToString.\n");
5748 cc = ptr->v->sfvec4f.c;
5752 if ((ptr = (
SFVec4fNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
5753 printf(
"JS_GetPrivate failed in SFVec4fToString.\n");
5758 memset(buff, 0, STRING);
5759 sprintf(buff,
"%.9g %.9g %.9g %.9g",
5760 cc[0], cc[1], cc[2],cc[3]);
5761 _str = JS_NewStringCopyZ(cx, buff);
5763 *rval = STRING_TO_JSVAL(_str);
5765 JS_SET_RVAL(cx,vp,STRING_TO_JSVAL(_str));
5768 #ifdef JSVRMLCLASSESVERBOSE
5769 printf (
"SFVec4fToString, string is :%s:\n",buff);
5777SFVec4fAssign(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
5779SFVec4fAssign(JSContext *cx, uintN argc, jsval *vp) {
5780 JSObject *obj = JS_THIS_OBJECT(cx,vp);
5781 jsval *argv = JS_ARGV(cx,vp);
5782 JSString *_id_jsstr;
5784 JSObject *_from_obj;
5790 #ifdef JSVRMLCLASSESVERBOSE
5791 printf (
"start of SFVec4fAssign\n");
5793 if(SM_method() == 2){
5795 if ((lhs = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
5796 printf(
"JS_GetPrivate failed for obj in SFVec4fAssign.\n");
5799 if (!JSVAL_IS_OBJECT(*vp))
5801 if ((rhs = (
AnyNative *)JS_GetPrivateFw(cx, JSVAL_TO_OBJECT(*vp))) == NULL) {
5802 printf(
"JS_ConvertArguments failed in SFVec4fAssign. \n");
5805 AnyNativeAssign(lhs,rhs);
5809 if ((ptr = (
SFVec4fNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
5810 printf(
"JS_GetPrivate failed for obj in SFVec4fAssign.\n");
5814 CHECK_CLASS(cx,obj,argv,__FUNCTION__,SFVec4fClass)
5817 if (!JS_ConvertArguments(cx, argc, argv,
"o s", &_from_obj, &_id_str)) {
5819 if (JS_ConvertArguments(cx, argc, argv,
"oS", &_from_obj, &_id_jsstr) == JS_TRUE) {
5820 _id_str = JS_EncodeString(cx,_id_jsstr);
5823 printf(
"JS_ConvertArguments failed in SFVec4fAssign.\n");
5827 CHECK_CLASS(cx,_from_obj,argv,__FUNCTION__,SFVec4fClass)
5829 if ((fptr = (
SFVec4fNative *)JS_GetPrivateFw(cx, _from_obj)) == NULL) {
5830 printf(
"JS_GetPrivate failed for _from_obj in SFVec4fAssign.\n");
5833 #ifdef JSVRMLCLASSESVERBOSE
5834 printf(
"SFVec4fAssign: obj = %p, id = \"%s\", from = %p\n",
5835 obj, _id_str, _from_obj);
5838 SFVec4fNativeAssign(ptr, fptr);
5841 *rval = OBJECT_TO_JSVAL(obj);
5843 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
5846 #ifdef JSVRMLCLASSESVERBOSE
5847 printf (
"end of SFVec4fAssign\n");
5855SFVec4fConstr(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
5857SFVec4fConstr(JSContext *cx, uintN argc, jsval *vp) {
5858 JSObject *obj = JS_NewObject(cx,&SFVec4fClass,NULL,NULL);
5859 jsval *argv = JS_ARGV(cx,vp);
5864 #ifdef JSVRMLCLASSESVERBOSE
5865 printf (
"start of SFVec4fConstr\n");
5869 if(SM_method() == 2){
5871 if((any = (
AnyNative*)AnyNativeNew(FIELDTYPE_SFVec4f,NULL,NULL)) == NULL){
5872 printf(
"AnyfNativeNew failed in SFVec4fConstr.\n");
5875 if (!JS_SetPrivateFw(cx, obj, any)) {
5876 printf(
"JS_SetPrivate failed in SFVec4fConstr.\n");
5879 cc = any->v->sfvec4f.c;
5883 printf(
"SFVec4fNativeNew failed in SFVec4fConstr.\n");
5886 ptr->valueChanged = 1;
5892 if (!JS_SetPrivateFw(cx, obj, ptr)) {
5893 printf(
"JS_SetPrivate failed in SFVec4fConstr.\n");
5899 cc[0] = (float) 0.0;
5900 cc[1] = (float) 0.0;
5901 cc[2] = (float) 0.0;
5902 cc[3] = (float) 0.0;
5904 if (!JS_ConvertArguments(cx, argc, argv,
"d d d d",
5905 &(pars[0]), &(pars[1]), &(pars[2]), &(pars[3]))) {
5906 printf(
"JS_ConvertArguments failed in SFVec4fConstr.\n");
5909 cc[0] = (float) pars[0];
5910 cc[1] = (float) pars[1];
5911 cc[2] = (float) pars[2];
5912 cc[3] = (float) pars[3];
5914 #ifdef JSVRMLCLASSESVERBOSE
5915 printf(
"SFVec4fConstr: obj = %p, %u args, %f %f %f %f\n",
5917 cc[0], cc[1], cc[2], cc[3]);
5922 *rval = OBJECT_TO_JSVAL(obj);
5924 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
5931SFVec4fGetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp){
5932#elif JS_VERSION == 185
5933SFVec4fGetProperty(JSContext *cx, JSObject *obj, jsid iid, jsval *vp){
5935SFVec4fGetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSMutableHandleValue hvp){
5936 JSObject *obj = *hobj._;
5942 #ifdef JSVRMLCLASSESVERBOSE
5946#if JS_VERSION >= 185
5948 if (!JS_IdToValue(cx,iid,&
id)) {
5949 printf(
"JS_IdToValue failed in SFVec4fGetProperty.\n");
5954 #ifdef JSVRMLCLASSESVERBOSE
5962 _idStr = JS_ValueToString(cx, *vp);
5964 _id_c = JS_GetStringBytes(_idStr);
5966 _id_c = JS_EncodeString(cx,_idStr);
5972 if ((any = (
AnyNative *)JS_GetPrivateFw(cx,obj)) == NULL) {
5973 printf(
"JS_GetPrivate failed in SFVec4fGetProperty.\n");
5976 cc = any->v->sfvec4f.c;
5979 if ((ptr = (
SFVec4fNative *)JS_GetPrivateFw(cx,obj)) == NULL) {
5980 printf(
"JS_GetPrivate failed in SFVec4fGetProperty.\n");
5985 if (JSVAL_IS_INT(
id)) {
5986 switch (JSVAL_TO_INT(
id)) {
5989 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
5991 "JS_NewDouble failed for %f in SFVec4fGetProperty.\n",
5998 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
6000 "JS_NewDouble failed for %f in SFVec4fGetProperty.\n",
6007 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
6009 "JS_NewDouble failed for %f in SFVec4fGetProperty.\n",
6016 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
6018 "JS_NewDouble failed for %f in SFVec4fGetProperty.\n",
6025 #ifdef JSVRMLCLASSESVERBOSE
6026 printf (
"SFVec4fGetProperty, id is NOT an int...\n");
6035SFVec4fSetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp){
6036#elif JS_VERSION == 185
6037SFVec4fSetProperty(JSContext *cx, JSObject *obj, jsid iid, JSBool strict, jsval *vp){
6039SFVec4fSetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSBool strict, JSMutableHandleValue hvp){
6040 JSObject *obj = *hobj._;
6047#if JS_VERSION >= 185
6049 if (!JS_IdToValue(cx,iid,&
id)) {
6050 printf(
"JS_IdToValue failed in SFVec4fSetProperty.\n");
6055 if(SM_method() == 2){
6057 if ((any = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
6058 printf(
"JS_GetPrivate failed in SFVec4fSetProperty.\n");
6061 if(any->valueChanged)
6062 (*any->valueChanged)++;
6063 cc = any->v->sfvec4f.c;
6067 if ((ptr = (
SFVec4fNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
6068 printf(
"JS_GetPrivate failed in SFVec4fSetProperty.\n");
6071 ptr->valueChanged++;
6072 #ifdef JSVRMLCLASSESVERBOSE
6073 printf(
"SFVec4fSetProperty: obj = %p, id = %d, valueChanged = %d\n",
6074 obj, JSVAL_TO_INT(
id), ptr->valueChanged);
6078 if (!JS_ConvertValue(cx, *vp, JSTYPE_NUMBER, &myv)) {
6079 printf(
"JS_ConvertValue failed in SFVec4fSetProperty.\n");
6083 if (JSVAL_IS_INT(
id)) {
6084 switch (JSVAL_TO_INT(
id)) {
6087 cc[0] = (float) *JSVAL_TO_DOUBLE(myv);
6089 cc[0] = (float) JSVAL_TO_DOUBLE(myv);
6094 cc[1] = (float) *JSVAL_TO_DOUBLE(myv);
6096 cc[1] = (float) JSVAL_TO_DOUBLE(myv);
6101 cc[2] = (float) *JSVAL_TO_DOUBLE(myv);
6103 cc[2] = (float) JSVAL_TO_DOUBLE(myv);
6108 cc[3] = (float) *JSVAL_TO_DOUBLE(myv);
6110 cc[3] = (float) JSVAL_TO_DOUBLE(myv);
6122SFVec4dToString(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
6124SFVec4dToString(JSContext *cx, uintN argc, jsval *vp) {
6125 JSObject *obj = JS_THIS_OBJECT(cx,vp);
6126 jsval *argv = JS_ARGV(cx,vp);
6136 if ((ptr = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
6137 printf(
"JS_GetPrivate failed in SFVec4dToString.\n");
6140 cc = ptr->v->sfvec4d.c;
6143 if ((ptr = (
SFVec4dNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
6144 printf(
"JS_GetPrivate failed in SFVec4dToString.\n");
6149 memset(buff, 0, STRING);
6150 sprintf(buff,
"%.9g %.9g %.9g %.9g",
6151 cc[0], cc[1], cc[2],cc[3]);
6152 _str = JS_NewStringCopyZ(cx, buff);
6155 *rval = STRING_TO_JSVAL(_str);
6157 JS_SET_RVAL(cx,vp,STRING_TO_JSVAL(_str));
6160 #ifdef JSVRMLCLASSESVERBOSE
6161 printf (
"SFVec4dToString, string is :%s:\n",buff);
6169SFVec4dAssign(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
6171SFVec4dAssign(JSContext *cx, uintN argc, jsval *vp) {
6172 JSObject *obj = JS_THIS_OBJECT(cx,vp);
6173 jsval *argv = JS_ARGV(cx,vp);
6174 JSString *_id_jsstr;
6176 JSObject *_from_obj;
6181 #ifdef JSVRMLCLASSESVERBOSE
6182 printf (
"start of SFVec4dAssign\n");
6185 if(SM_method() == 2){
6187 if ((lhs = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
6188 printf(
"JS_GetPrivate failed for obj in SFVec4dAssign.\n");
6191 if (!JSVAL_IS_OBJECT(*vp))
6193 if ((rhs = (
AnyNative *)JS_GetPrivateFw(cx, JSVAL_TO_OBJECT(*vp))) == NULL) {
6194 printf(
"in SFVec4dAssign, RHS was NOT native type \n");
6197 AnyNativeAssign(lhs,rhs);
6202 if ((ptr = (
SFVec4dNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
6203 printf(
"JS_GetPrivate failed for obj in SFVec4dAssign.\n");
6207 CHECK_CLASS(cx,obj,argv,__FUNCTION__,SFVec4dClass)
6210 if (!JS_ConvertArguments(cx, argc, argv,
"o s", &_from_obj, &_id_str)) {
6212 if (JS_ConvertArguments(cx, argc, argv,
"oS", &_from_obj, &_id_jsstr) == JS_TRUE) {
6213 _id_str = JS_EncodeString(cx,_id_jsstr);
6216 printf(
"JS_ConvertArguments failed in SFVec4dAssign.\n");
6220 CHECK_CLASS(cx,_from_obj,argv,__FUNCTION__,SFVec4dClass)
6222 if ((fptr = (
SFVec4dNative *)JS_GetPrivateFw(cx, _from_obj)) == NULL) {
6223 printf(
"JS_GetPrivate failed for _from_obj in SFVec4dAssign.\n");
6226 #ifdef JSVRMLCLASSESVERBOSE
6227 printf(
"SFVec4dAssign: obj = %p, id = \"%s\", from = %p\n",
6228 obj, _id_str, _from_obj);
6231 SFVec4dNativeAssign(ptr, fptr);
6234 *rval = OBJECT_TO_JSVAL(obj);
6236 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
6239 #ifdef JSVRMLCLASSESVERBOSE
6240 printf (
"end of SFVec4dAssign\n");
6248SFVec4dConstr(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
6250SFVec4dConstr(JSContext *cx, uintN argc, jsval *vp) {
6251 JSObject *obj = JS_NewObject(cx,&SFVec4dClass,NULL,NULL);
6252 jsval *argv = JS_ARGV(cx,vp);
6257 #ifdef JSVRMLCLASSESVERBOSE
6258 printf (
"start of SFVec4dConstr\n");
6262 if(SM_method() == 2){
6264 if ((any = (
AnyNative *) AnyNativeNew(FIELDTYPE_SFVec4d,NULL,NULL)) == NULL) {
6265 printf(
"SFVec3dNativeNew failed in SFVec3dConstr.\n");
6269 if (!JS_SetPrivateFw(cx, obj, any)) {
6270 printf(
"JS_SetPrivate failed in SFVec3dConstr.\n");
6273 cc = any->v->sfvec4d.c;
6278 printf(
"SFVec4dNativeNew failed in SFVec4dConstr.\n");
6286 if (!JS_SetPrivateFw(cx, obj, ptr)) {
6287 printf(
"JS_SetPrivate failed in SFVec4dConstr.\n");
6290 ptr->valueChanged = 1;
6294 cc[0] = (float) 0.0;
6295 cc[1] = (float) 0.0;
6296 cc[2] = (float) 0.0;
6297 cc[3] = (float) 0.0;
6299 if (!JS_ConvertArguments(cx, argc, argv,
"d d d d",
6300 &(pars[0]), &(pars[1]), &(pars[2]), &(pars[3]))) {
6301 printf(
"JS_ConvertArguments failed in SFVec4dConstr.\n");
6304 cc[0] = (float) pars[0];
6305 cc[1] = (float) pars[1];
6306 cc[2] = (float) pars[2];
6307 cc[3] = (float) pars[3];
6309 #ifdef JSVRMLCLASSESVERBOSE
6310 printf(
"SFVec4dConstr: obj = %p, %u args, %f %f %f %f\n",
6312 cc[0], cc[1], cc[2], cc[3]);
6317 *rval = OBJECT_TO_JSVAL(obj);
6319 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
6326SFVec4dGetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp){
6327#elif JS_VERSION == 185
6328SFVec4dGetProperty(JSContext *cx, JSObject *obj, jsid iid, jsval *vp){
6330SFVec4dGetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSMutableHandleValue hvp){
6331 JSObject *obj = *hobj._;
6337 #ifdef JSVRMLCLASSESVERBOSE
6341#if JS_VERSION >= 185
6343 if (!JS_IdToValue(cx,iid,&
id)) {
6344 printf(
"JS_IdToValue failed in SFVec4dGetProperty.\n");
6349 #ifdef JSVRMLCLASSESVERBOSE
6353 _idStr = JS_ValueToString(cx, *vp);
6355 _id_c = JS_GetStringBytes(_idStr);
6357 _id_c = JS_EncodeString(cx,_idStr);
6363 if ((ptr = (
AnyNative *)JS_GetPrivateFw(cx,obj)) == NULL) {
6364 printf(
"JS_GetPrivate failed in SFVec4dGetProperty.\n");
6367 cc = ptr->v->sfvec4d.c;
6370 if ((ptr = (
SFVec4dNative *)JS_GetPrivateFw(cx,obj)) == NULL) {
6371 printf(
"JS_GetPrivate failed in SFVec4dGetProperty.\n");
6376 if (JSVAL_IS_INT(
id)) {
6377 switch (JSVAL_TO_INT(
id)) {
6380 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
6382 "JS_NewDouble failed for %f in SFVec4dGetProperty.\n",
6389 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
6391 "JS_NewDouble failed for %f in SFVec4dGetProperty.\n",
6398 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
6400 "JS_NewDouble failed for %f in SFVec4dGetProperty.\n",
6407 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
6409 "JS_NewDouble failed for %f in SFVec4dGetProperty.\n",
6416 #ifdef JSVRMLCLASSESVERBOSE
6417 printf (
"SFVec4dGetProperty, id is NOT an int...\n");
6426SFVec4dSetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp){
6427#elif JS_VERSION == 185
6428SFVec4dSetProperty(JSContext *cx, JSObject *obj, jsid iid, JSBool strict, jsval *vp){
6430SFVec4dSetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSBool strict, JSMutableHandleValue hvp){
6431 JSObject *obj = *hobj._;
6438#if JS_VERSION >= 185
6440 if (!JS_IdToValue(cx,iid,&
id)) {
6441 printf(
"JS_IdToValue failed in SFVec4dSetProperty.\n");
6447 if ((ptr = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
6448 printf(
"JS_GetPrivate failed in SFVec4dSetProperty.\n");
6451 if(ptr->valueChanged)
6452 (*ptr->valueChanged)++;
6453 #ifdef JSVRMLCLASSESVERBOSE
6454 printf(
"SFVec4dSetProperty: obj = %p, id = %d, valueChanged = %d\n",
6455 obj, JSVAL_TO_INT(
id), ptr->valueChanged);
6457 cc = ptr->v->sfvec4d.c;
6461 if ((ptr = (
SFVec4dNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
6462 printf(
"JS_GetPrivate failed in SFVec4dSetProperty.\n");
6465 ptr->valueChanged++;
6466 #ifdef JSVRMLCLASSESVERBOSE
6467 printf(
"SFVec4dSetProperty: obj = %p, id = %d, valueChanged = %d\n",
6468 obj, JSVAL_TO_INT(
id), ptr->valueChanged);
6472 if (!JS_ConvertValue(cx, *vp, JSTYPE_NUMBER, &myv)) {
6473 printf(
"JS_ConvertValue failed in SFVec4dSetProperty.\n");
6477 if (JSVAL_IS_INT(
id)) {
6478 switch (JSVAL_TO_INT(
id)) {
6481 cc[0] = (float) *JSVAL_TO_DOUBLE(myv);
6483 cc[0] = (float) JSVAL_TO_DOUBLE(myv);
6488 cc[1] = (float) *JSVAL_TO_DOUBLE(myv);
6490 cc[1] = (float) JSVAL_TO_DOUBLE(myv);
6495 cc[2] = (float) *JSVAL_TO_DOUBLE(myv);
6497 cc[2] = (float) JSVAL_TO_DOUBLE(myv);
6502 cc[3] = (float) *JSVAL_TO_DOUBLE(myv);
6504 cc[3] = (float) JSVAL_TO_DOUBLE(myv);