31 #if !(defined(JAVASCRIPT_STUB) || defined(JAVASCRIPT_DUK))
33 #include <system_threads.h>
37 #include <libFreeWRL.h>
39 #include "../vrml_parser/Structs.h"
40 #include "../main/headers.h"
41 #include "../vrml_parser/CParseGeneral.h"
42 #include "../main/Snapshot.h"
43 #include "../scenegraph/Collision.h"
44 #include "../scenegraph/quaternion.h"
45 #include "../scenegraph/Viewer.h"
46 #include "../input/SensInterps.h"
47 #include "../x3d_parser/Bindable.h"
48 #include "../scenegraph/LinearAlgebra.h"
54 #include "jsVRMLClasses.h"
68 JS_MY_Finalize(JSContext *cx, JSObject *obj)
71 #ifdef JSVRMLCLASSESVERBOSE
72 printf (
"finalizing %p\n",obj);
73 printJSNodeType(cx,obj);
78 if ((ptr = (
void *)JS_GetPrivate(cx, obj)) != NULL) {
80 #ifdef JSVRMLCLASSESVERBOSE
82 printf (
"Finalize - no private data!\n");
89 MFColorToString(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
91 MFColorToString(JSContext *cx, uintN argc, jsval *vp) {
92 JSObject *obj = JS_THIS_OBJECT(cx,vp);
93 jsval *argv = JS_ARGV(cx,vp);
99 return doMFToString(cx, obj,
"MFColor", rval);
101 if (!doMFToString(cx, obj,
"MFColor", &rval)) {
return JS_FALSE; }
102 JS_SET_RVAL(cx,vp,rval);
109 MFColorAssign(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
110 return _standardMFAssign (cx, obj, argc, argv, rval, &MFColorClass,FIELDTYPE_SFColor);
112 MFColorAssign(JSContext *cx, uintN argc, jsval *vp) {
113 JSObject *obj = JS_THIS_OBJECT(cx,vp);
114 jsval *argv = JS_ARGV(cx,vp);
116 if (!_standardMFAssign (cx, obj, argc, argv, &rval, &MFColorClass,FIELDTYPE_SFColor)) {
return JS_FALSE; }
117 JS_SET_RVAL(cx,vp,rval);
124 MFColorConstr(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
126 MFColorConstr(JSContext *cx, uintN argc, jsval *vp) {
127 JSObject *obj = JS_NewObject(cx,&MFColorClass,NULL,NULL);
128 jsval *argv = JS_ARGV(cx,vp);
129 jsval rval = OBJECT_TO_JSVAL(obj);
130 if (!MFColorConstrInternals(cx,obj,argc,argv,&rval)) {
return JS_FALSE; }
131 JS_SET_RVAL(cx,vp,rval);
134 JSBool MFColorConstrInternals(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
140 DEFINE_LENGTH(cx,obj,argc)
146 #ifdef JSVRMLCLASSESVERBOSE
147 printf(
"MFColorConstr: obj = %p, %u args\n",
151 for (i = 0; i < argc; i++) {
152 if (!JS_ValueToObject(cx, argv[i], &_obj)) {
154 "JS_ValueToObject failed in MFColorConstr.\n");
158 CHECK_CLASS(cx,_obj,NULL,__FUNCTION__,SFColorClass)
160 if (!JS_DefineElement(cx, obj, (jsint) i, argv[i], JS_GET_PROPERTY_STUB, JS_SET_PROPERTY_CHECK, JSPROP_ENUMERATE)) {
161 printf(
"JS_DefineElement failed for arg %u in MFColorConstr.\n", i);
165 *rval = OBJECT_TO_JSVAL(obj);
171 MFColorAddProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp) {
173 MFColorAddProperty(JSContext *cx, JSObject *obj, jsid
id, jsval *vp) {
175 return doMFAddProperty(cx, obj,
id, vp,
"MFColorAddProperty");
180 MFColorGetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp) {
182 MFColorGetProperty(JSContext *cx, JSObject *obj, jsid
id, jsval *vp) {
184 return _standardMFGetProperty(cx, obj,
id, vp,
185 "_FreeWRL_Internal = new SFColor()", FIELDTYPE_MFColor);
190 MFColorSetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp) {
192 MFColorSetProperty(JSContext *cx, JSObject *obj, jsid
id, JSBool strict,jsval *vp) {
194 return doMFSetProperty(cx, obj,
id, vp,FIELDTYPE_MFColor);
199 MFFloatToString(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
201 MFFloatToString(JSContext *cx, uintN argc, jsval *vp) {
202 JSObject *obj = JS_THIS_OBJECT(cx,vp);
203 jsval *argv = JS_ARGV(cx,vp);
209 return doMFToString(cx, obj,
"MFFloat", rval);
211 if (!doMFToString(cx, obj,
"MFFloat", &rval)) {
return JS_FALSE; }
212 JS_SET_RVAL(cx,vp,rval);
219 MFFloatAssign(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
221 MFFloatAssign(JSContext *cx, uintN argc, jsval *vp) {
222 JSObject *obj = JS_THIS_OBJECT(cx,vp);
223 jsval *argv = JS_ARGV(cx,vp);
226 SET_MF_ECMA_HAS_CHANGED
229 return _standardMFAssign (cx, obj, argc, argv, rval, &MFFloatClass,FIELDTYPE_SFFloat);
231 if (!_standardMFAssign (cx, obj, argc, argv, &rval, &MFFloatClass,FIELDTYPE_SFFloat)) {
return JS_FALSE; }
232 JS_SET_RVAL(cx,vp,rval);
239 MFFloatConstr(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
241 MFFloatConstr(JSContext *cx, uintN argc, jsval *vp) {
242 JSObject *obj = JS_NewObject(cx,&MFFloatClass,NULL,NULL);
243 jsval *argv = JS_ARGV(cx,vp);
244 jsval rval = OBJECT_TO_JSVAL(obj);
245 if (!MFFloatConstrInternals(cx,obj,argc,argv,&rval)) {
return JS_FALSE; }
246 JS_SET_RVAL(cx,vp,rval);
249 JSBool MFFloatConstrInternals(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
256 DEFINE_LENGTH(cx,obj,argc)
257 DEFINE_MF_ECMA_HAS_CHANGED
263 #ifdef JSVRMLCLASSESVERBOSE
264 printf(
"MFFloatConstr: obj = %p, %u args\n", obj, argc);
266 for (i = 0; i < argc; i++) {
267 if (!JS_ValueToNumber(cx, argv[i], &_d)) {
268 printf(
"JS_ValueToNumber failed in MFFloatConstr.\n");
272 if (!JS_DefineElement(cx, obj, (jsint) i, argv[i], JS_GET_PROPERTY_STUB, JS_SET_PROPERTY_CHECK, JSPROP_ENUMERATE)) {
273 printf(
"JS_DefineElement failed for arg %u in MFFloatConstr.\n", i);
277 *rval = OBJECT_TO_JSVAL(obj);
283 MFFloatAddProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp) {
285 MFFloatAddProperty(JSContext *cx, JSObject *obj, jsid
id, jsval *vp) {
287 return doMFAddProperty(cx, obj,
id, vp,
"MFFloatAddProperty");
292 MFFloatGetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp) {
294 MFFloatGetProperty(JSContext *cx, JSObject *obj, jsid
id, jsval *vp) {
296 return _standardMFGetProperty(cx, obj,
id, vp,
297 "_FreeWRL_Internal = 0.0", FIELDTYPE_MFFloat);
302 MFFloatSetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp) {
304 MFFloatSetProperty(JSContext *cx, JSObject *obj, jsid
id, JSBool strict, jsval *vp) {
306 return doMFSetProperty(cx, obj,
id, vp,FIELDTYPE_MFFloat);
312 MFInt32ToString(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
314 MFInt32ToString(JSContext *cx, uintN argc, jsval *vp) {
315 JSObject *obj = JS_THIS_OBJECT(cx,vp);
316 jsval *argv = JS_ARGV(cx,vp);
321 #ifdef JSVRMLCLASSESVERBOSE
322 printf (
"start of MFInt32ToString\n");
326 return doMFToString(cx, obj,
"MFInt32", rval);
328 if (!doMFToString(cx, obj,
"MFInt32", &rval)) {
return JS_FALSE; }
329 JS_SET_RVAL(cx,vp,rval);
336 MFInt32Assign(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
338 MFInt32Assign(JSContext *cx, uintN argc, jsval *vp) {
339 JSObject *obj = JS_THIS_OBJECT(cx,vp);
340 jsval *argv = JS_ARGV(cx,vp);
343 #ifdef JSVRMLCLASSESVERBOSE
344 printf (
"start of MFInt32Assign\n");
347 SET_MF_ECMA_HAS_CHANGED
350 return _standardMFAssign (cx, obj, argc, argv, rval, &MFInt32Class,FIELDTYPE_SFInt32);
352 if (!_standardMFAssign (cx, obj, argc, argv, &rval, &MFInt32Class,FIELDTYPE_SFInt32)) {
return JS_FALSE; }
353 JS_SET_RVAL(cx,vp,rval);
361 MFInt32Constr(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
363 MFInt32Constr(JSContext *cx, uintN argc, jsval *vp) {
364 JSObject *obj = JS_NewObject(cx,&MFInt32Class,NULL,NULL);
365 jsval *argv = JS_ARGV(cx,vp);
366 jsval rval = OBJECT_TO_JSVAL(obj);
367 if (!MFInt32ConstrInternals(cx,obj,argc,argv,&rval)) {
return JS_FALSE; }
368 JS_SET_RVAL(cx,vp,rval);
371 JSBool MFInt32ConstrInternals(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
375 #ifdef JSVRMLCLASSESVERBOSE
376 printf (
"start of MFInt32Constr\n");
380 DEFINE_LENGTH(cx,obj,argc)
381 DEFINE_MF_ECMA_HAS_CHANGED
387 #ifdef JSVRMLCLASSESVERBOSE
388 printf(
"MFInt32Constr: obj = %p, %u args\n", obj, argc);
392 for (i = 0; i < argc; i++) {
393 if (!JS_ValueToInt32(cx, argv[i], &_i)) {
394 printf(
"JS_ValueToBoolean failed in MFInt32Constr.\n");
397 #ifdef JSVRMLCLASSESVERBOSE
398 printf (
"value at %d is %d\n",i,_i);
401 if (!JS_DefineElement(cx, obj, (jsint) i, argv[i], JS_GET_PROPERTY_STUB, JS_SET_PROPERTY_CHECK, JSPROP_ENUMERATE)) {
402 printf(
"JS_DefineElement failed for arg %u in MFInt32Constr.\n", i);
407 *rval = OBJECT_TO_JSVAL(obj);
413 MFInt32AddProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp) {
415 MFInt32AddProperty(JSContext *cx, JSObject *obj, jsid
id, jsval *vp) {
417 #ifdef JSVRMLCLASSESVERBOSE
418 printf (
"start of MFInt32AddProperty\n");
421 return doMFAddProperty(cx, obj,
id, vp,
"MFInt32AddProperty");
426 MFInt32GetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp) {
428 MFInt32GetProperty(JSContext *cx, JSObject *obj, jsid
id, jsval *vp) {
430 #ifdef JSVRMLCLASSESVERBOSE
431 printf (
"start of MFInt32GetProperty\n");
434 return _standardMFGetProperty(cx, obj,
id, vp,
435 "_FreeWRL_Internal = 0", FIELDTYPE_MFInt32);
440 MFInt32SetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp) {
442 MFInt32SetProperty(JSContext *cx, JSObject *obj, jsid
id, JSBool strict, jsval *vp) {
444 #ifdef JSVRMLCLASSESVERBOSE
445 printf (
"start of MFInt32SetProperty\n");
448 return doMFSetProperty(cx, obj,
id, vp,FIELDTYPE_MFInt32);
454 MFNodeToString(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
456 MFNodeToString(JSContext *cx, uintN argc, jsval *vp) {
457 JSObject *obj = JS_THIS_OBJECT(cx,vp);
458 jsval *argv = JS_ARGV(cx,vp);
464 #ifdef JSVRMLCLASSESVERBOSE
465 printf (
"start of MFNODETOSTRING, obj %p\n",obj);
468 return doMFToString(cx, obj,
"MFNode", rval);
470 if (!doMFToString(cx, obj,
"MFNode", &rval)) {
return JS_FALSE; }
471 JS_SET_RVAL(cx,vp,rval);
478 MFNodeAssign(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
480 MFNodeAssign(JSContext *cx, uintN argc, jsval *vp) {
481 JSObject *obj = JS_THIS_OBJECT(cx,vp);
482 jsval *argv = JS_ARGV(cx,vp);
485 #ifdef JSVRMLCLASSESVERBOSE
486 printf (
"start of MFNODEASSIGN, obj %p\n",obj);
490 return _standardMFAssign (cx, obj, argc, argv, rval, &MFNodeClass,FIELDTYPE_SFNode);
492 if (!_standardMFAssign (cx, obj, argc, argv, &rval, &MFNodeClass,FIELDTYPE_SFNode)) {
return JS_FALSE; }
493 JS_SET_RVAL(cx,vp,rval);
500 MFNodeConstr(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
502 MFNodeConstr(JSContext *cx, uintN argc, jsval *vp) {
503 JSObject *obj = JS_NewObject(cx,&MFNodeClass,NULL,NULL);
504 jsval *argv = JS_ARGV(cx,vp);
505 jsval rval = OBJECT_TO_JSVAL(obj);
506 if (!MFNodeConstrInternals(cx,obj,argc,argv,&rval)) {
return JS_FALSE; }
507 JS_SET_RVAL(cx,vp,rval);
510 JSBool MFNodeConstrInternals(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
516 DEFINE_LENGTH(cx,obj,argc)
522 #ifdef JSVRMLCLASSESVERBOSE
523 printf(
"MFNodeConstr: obj = %p, %u args\n", obj, argc);
526 for (i = 0; i < argc; i++) {
527 if (JSVAL_IS_OBJECT(argv[i])) {
529 if (!JS_ValueToObject(cx, argv[i], &_obj)) {
530 printf(
"JS_ValueToObject failed in MFNodeConstr.\n");
534 CHECK_CLASS(cx,_obj,argv,__FUNCTION__,SFNodeClass)
536 if (!JS_DefineElement(cx, obj, (jsint) i, argv[i], JS_GET_PROPERTY_STUB, JS_SET_PROPERTY_CHECK, JSPROP_ENUMERATE)) {
537 printf(
"JS_DefineElement failed for arg %d in MFNodeConstr.\n", i);
544 #ifdef JSVRMLCLASSESVERBOSE
545 if (JSVAL_IS_NULL(argv[i])) { printf (
"MFNodeConstr - its a NULL\n");}
546 if (JSVAL_IS_INT(argv[i])) { printf (
"MFNodeConstr - its a INT\n");}
547 if (JSVAL_IS_STRING(argv[i])) { printf (
"MFNodeConstr - its a STRING\n");}
551 *rval = OBJECT_TO_JSVAL(obj);
557 MFNodeAddProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp) {
559 MFNodeAddProperty(JSContext *cx, JSObject *obj, jsid
id, jsval *vp) {
561 #ifdef JSVRMLCLASSESVERBOSE
562 printf (
"startof MFNODEADDPROPERTY\n");
564 return doMFAddProperty(cx, obj,
id, vp,
"MFNodeAddProperty");
569 MFNodeGetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp) {
571 MFNodeGetProperty(JSContext *cx, JSObject *obj, jsid
id, jsval *vp) {
573 #ifdef JSVRMLCLASSESVERBOSE
574 printf (
"start of MFNODEGETPROPERTY obj %p\n",obj);
576 return _standardMFGetProperty(cx, obj,
id, vp,
577 "_FreeWRL_Internal = 0",
583 MFNodeSetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp) {
585 MFNodeSetProperty(JSContext *cx, JSObject *obj, jsid
id, JSBool strict, jsval *vp) {
588 return doMFSetProperty(cx, obj,
id, vp,FIELDTYPE_MFNode);
594 MFTimeAddProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp) {
596 MFTimeAddProperty(JSContext *cx, JSObject *obj, jsid
id, jsval *vp) {
598 return doMFAddProperty(cx, obj,
id, vp,
"MFTimeAddProperty");
602 MFTimeGetProperty(JSContext *cx, JSObject *obj, jsid
id, jsval *vp) {
603 return _standardMFGetProperty(cx, obj,
id, vp,
604 "_FreeWRL_Internal = 0.0",
610 MFTimeSetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp) {
612 MFTimeSetProperty(JSContext *cx, JSObject *obj, jsid
id, JSBool strict, jsval *vp) {
614 return doMFSetProperty(cx, obj,
id, vp,FIELDTYPE_MFTime);
619 MFTimeToString(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
621 MFTimeToString(JSContext *cx, uintN argc, jsval *vp) {
622 JSObject *obj = JS_THIS_OBJECT(cx,vp);
623 jsval *argv = JS_ARGV(cx,vp);
629 return doMFToString(cx, obj,
"MFTime", rval);
631 if (!doMFToString(cx, obj,
"MFTime", &rval)) {
return JS_FALSE; }
632 JS_SET_RVAL(cx,vp,rval);
639 MFTimeConstr(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
641 MFTimeConstr(JSContext *cx, uintN argc, jsval *vp) {
642 JSObject *obj = JS_NewObject(cx,&MFTimeClass,NULL,NULL);
643 jsval *argv = JS_ARGV(cx,vp);
644 jsval rval = OBJECT_TO_JSVAL(obj);
645 if (!MFTimeConstrInternals(cx,obj,argc,argv,&rval)) {
return JS_FALSE; }
646 JS_SET_RVAL(cx,vp,rval);
649 JSBool MFTimeConstrInternals(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
655 DEFINE_LENGTH(cx,obj,argc)
656 DEFINE_MF_ECMA_HAS_CHANGED
662 #ifdef JSVRMLCLASSESVERBOSE
663 printf(
"MFTimeConstr: obj = %p, %u args\n", obj, argc);
665 for (i = 0; i < argc; i++) {
666 if (!JS_ValueToNumber(cx, argv[i], &_d)) {
668 "JS_ValueToNumber failed in MFTimeConstr.\n");
672 if (!JS_DefineElement(cx, obj, (jsint) i, argv[i], JS_GET_PROPERTY_STUB, JS_SET_PROPERTY_CHECK, JSPROP_ENUMERATE)) {
673 printf(
"JS_DefineElement failed for arg %u in MFTimeConstr.\n", i);
677 *rval = OBJECT_TO_JSVAL(obj);
683 MFTimeAssign(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
685 MFTimeAssign(JSContext *cx, uintN argc, jsval *vp) {
686 JSObject *obj = JS_THIS_OBJECT(cx,vp);
687 jsval *argv = JS_ARGV(cx,vp);
690 SET_MF_ECMA_HAS_CHANGED
693 return _standardMFAssign (cx, obj, argc, argv, rval, &MFTimeClass,FIELDTYPE_SFTime);
695 if (!_standardMFAssign (cx, obj, argc, argv, &rval, &MFTimeClass,FIELDTYPE_SFTime)) {
return JS_FALSE; }
696 JS_SET_RVAL(cx,vp,rval);
705 MFVec2fAddProperty(JSContext *cx, JSObject *obj, jsid
id, jsval *vp) {
707 MFVec2fAddProperty(JSContext *cx, JSObject *obj, jsid
id, jsval *vp) {
709 return doMFAddProperty(cx, obj,
id, vp,
"MFVec2fAddProperty");
714 MFVec2fGetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp) {
716 MFVec2fGetProperty(JSContext *cx, JSObject *obj, jsid
id, jsval *vp) {
718 return _standardMFGetProperty(cx, obj,
id, vp,
719 "_FreeWRL_Internal = new SFVec2f()",FIELDTYPE_MFVec2f);
724 MFVec2fSetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp) {
726 MFVec2fSetProperty(JSContext *cx, JSObject *obj, jsid
id, JSBool strict, jsval *vp) {
728 return doMFSetProperty(cx, obj,
id, vp,FIELDTYPE_MFVec2f);
733 MFVec2fToString(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
735 MFVec2fToString(JSContext *cx, uintN argc, jsval *vp) {
736 JSObject *obj = JS_THIS_OBJECT(cx,vp);
737 jsval *argv = JS_ARGV(cx,vp);
743 return doMFToString(cx, obj,
"MFVec2f", rval);
745 if (!doMFToString(cx, obj,
"MFVec2f", &rval)) {
return JS_FALSE; }
746 JS_SET_RVAL(cx,vp,rval);
753 MFVec2fConstr(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
755 MFVec2fConstr(JSContext *cx, uintN argc, jsval *vp) {
756 JSObject *obj = JS_NewObject(cx,&MFVec2fClass,NULL,NULL);
757 jsval *argv = JS_ARGV(cx,vp);
758 jsval rval = OBJECT_TO_JSVAL(obj);
759 if (!MFVec2fConstrInternals(cx,obj,argc,argv,&rval)) {
return JS_FALSE; }
760 JS_SET_RVAL(cx,vp,rval);
763 JSBool MFVec2fConstrInternals(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
769 DEFINE_LENGTH(cx,obj,argc)
775 #ifdef JSVRMLCLASSESVERBOSE
776 printf(
"MFVec2fConstr: obj = %p, %u args\n", obj, argc);
779 for (i = 0; i < argc; i++) {
780 if (!JS_ValueToObject(cx, argv[i], &_obj)) {
781 printf(
"JS_ValueToObject failed in MFVec2fConstr.\n");
785 CHECK_CLASS(cx,_obj,NULL,__FUNCTION__,SFVec2fClass)
787 if (!JS_DefineElement(cx, obj, (jsint) i, argv[i], JS_GET_PROPERTY_STUB, JS_SET_PROPERTY_CHECK, JSPROP_ENUMERATE)) {
788 printf(
"JS_DefineElement failed for arg %d in MFVec2fConstr.\n", i);
792 *rval = OBJECT_TO_JSVAL(obj);
798 MFVec2fAssign(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
799 return _standardMFAssign (cx, obj, argc, argv, rval, &MFVec2fClass,FIELDTYPE_SFVec2f);
801 MFVec2fAssign(JSContext *cx, uintN argc, jsval *vp) {
802 JSObject *obj = JS_THIS_OBJECT(cx,vp);
803 jsval *argv = JS_ARGV(cx,vp);
805 if (!_standardMFAssign (cx, obj, argc, argv, &rval, &MFVec2fClass,FIELDTYPE_SFVec2f)) {
return JS_FALSE; }
806 JS_SET_RVAL(cx,vp,rval);
814 MFVec3fAddProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp) {
816 MFVec3fAddProperty(JSContext *cx, JSObject *obj, jsid
id, jsval *vp) {
818 return doMFAddProperty(cx, obj,
id, vp,
"MFVec3fAddProperty");
823 MFVec3fGetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp) {
825 MFVec3fGetProperty(JSContext *cx, JSObject *obj, jsid
id, jsval *vp) {
827 return _standardMFGetProperty(cx, obj,
id, vp,
828 "_FreeWRL_Internal = new SFVec3f()",FIELDTYPE_MFVec3f);
833 MFVec3fSetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp) {
835 MFVec3fSetProperty(JSContext *cx, JSObject *obj, jsid
id, JSBool strict, jsval *vp) {
837 return doMFSetProperty(cx, obj,
id, vp,FIELDTYPE_MFVec3f);
842 MFVec3fToString(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
844 MFVec3fToString(JSContext *cx, uintN argc, jsval *vp) {
845 JSObject *obj = JS_THIS_OBJECT(cx,vp);
846 jsval *argv = JS_ARGV(cx,vp);
853 return doMFToString(cx, obj,
"MFVec3f", rval);
855 if (!doMFToString(cx, obj,
"MFVec3f", &rval)) {
return JS_FALSE; }
856 JS_SET_RVAL(cx,vp,rval);
863 MFVec3fConstr(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
865 MFVec3fConstr(JSContext *cx, uintN argc, jsval *vp) {
866 JSObject *obj = JS_NewObject(cx,&MFVec3fClass,NULL,NULL);
867 jsval *argv = JS_ARGV(cx,vp);
868 jsval rval = OBJECT_TO_JSVAL(obj);
869 if (!MFVec3fConstrInternals(cx,obj,argc,argv,&rval)) {
return JS_FALSE; }
870 JS_SET_RVAL(cx,vp,rval);
873 JSBool MFVec3fConstrInternals(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
879 DEFINE_LENGTH(cx,obj,argc)
885 #ifdef JSVRMLCLASSESVERBOSE
886 printf(
"MFVec3fConstr: obj = %p, %u args\n", obj, argc);
888 for (i = 0; i < argc; i++) {
889 if (!JS_ValueToObject(cx, argv[i], &_obj)) {
890 printf(
"JS_ValueToObject failed in MFVec3fConstr.\n");
894 CHECK_CLASS(cx,_obj,NULL,__FUNCTION__,SFVec3fClass)
896 if (!JS_DefineElement(cx, obj, (jsint) i, argv[i], JS_GET_PROPERTY_STUB, JS_SET_PROPERTY_CHECK, JSPROP_ENUMERATE)) {
897 printf(
"JS_DefineElement failed for arg %d in MFVec3fConstr.\n", i);
901 *rval = OBJECT_TO_JSVAL(obj);
907 MFVec3fAssign(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
908 return _standardMFAssign (cx, obj, argc, argv, rval, &MFVec3fClass,FIELDTYPE_SFVec3f);
910 MFVec3fAssign(JSContext *cx, uintN argc, jsval *vp) {
911 JSObject *obj = JS_THIS_OBJECT(cx,vp);
912 jsval *argv = JS_ARGV(cx,vp);
914 if (!_standardMFAssign (cx, obj, argc, argv, &rval, &MFVec3fClass,FIELDTYPE_SFVec3f)) {
return JS_FALSE; }
915 JS_SET_RVAL(cx,vp,rval);
922 static void _setmatrix (JSContext *cx, JSObject *obj,
double *matrix) {
925 for (i=0; i<16; i++) {
927 if (JS_NewNumberValue(cx, matrix[i],&val) == JS_FALSE) {
928 printf (
"problem creating id matrix\n");
932 if (!JS_SetElement(cx, obj, (jsint) i, &val)) {
933 printf(
"JS_DefineElement failed for arg %u in VrmlMatrixSetTransform.\n", i);
940 static void _getmatrix (JSContext *cx, JSObject *obj,
double *fl) {
947 if (!JS_GetProperty(cx, obj, MF_LENGTH_FIELD, &_length_val)) {
948 printf(
"JS_GetProperty failed for \"%s\" in _getmatrix.\n", MF_LENGTH_FIELD);
951 _length = JSVAL_TO_INT(_length_val);
954 #ifdef JSVRMLCLASSESVERBOSE
955 printf (
"_getmatrix, length %d\n",_length);
959 if (_length>16) _length = 16;
961 for (i = 0; i < _length; i++) {
962 if (!JS_GetElement(cx, obj, (jsint) i, &val)) {
963 printf(
"failed in get of copyElements index %d.\n", i);
966 if (!JS_ValueToNumber(cx, val, &d)) {
967 printf (
"this is not a mumber!\n");
974 for (i=_length; i < 16; i++) {
982 VrmlMatrixToString(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
984 VrmlMatrixToString(JSContext *cx, uintN argc, jsval *vp) {
985 JSObject *obj = JS_THIS_OBJECT(cx,vp);
986 jsval *argv = JS_ARGV(cx,vp);
993 return doMFToString(cx, obj,
"MFFloat", rval);
995 if (!doMFToString(cx, obj,
"MFFloat", &rval)) {
return JS_FALSE; }
996 JS_SET_RVAL(cx,vp,rval);
1002 void _get4f(
double *ret,
double *mat,
int row) {
1003 if (row == 0) {ret[0]=MAT00;ret[1]=MAT01;ret[2]=MAT02;ret[3]=MAT03;}
1004 if (row == 1) {ret[0]=MAT10;ret[1]=MAT11;ret[2]=MAT12;ret[3]=MAT13;}
1005 if (row == 2) {ret[0]=MAT20;ret[1]=MAT21;ret[2]=MAT22;ret[3]=MAT23;}
1009 void _set4f(
double len,
double *mat,
int row) {
1010 if (row == 0) {MAT00=MAT00/len;MAT01=MAT01/len;MAT02=MAT02/len;MAT03=MAT03/len;}
1011 if (row == 1) {MAT10=MAT10/len;MAT11=MAT11/len;MAT12=MAT12/len;MAT13=MAT13/len;}
1012 if (row == 2) {MAT20=MAT20/len;MAT21=MAT21/len;MAT22=MAT22/len;MAT23=MAT23/len;}
1016 #if JS_VERSION < 185
1017 VrmlMatrixgetTransform(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
1019 VrmlMatrixgetTransform(JSContext *cx, uintN argc, jsval *vp) {
1020 JSObject *obj = JS_THIS_OBJECT(cx,vp);
1021 jsval *argv = JS_ARGV(cx,vp);
1024 JSObject *transObj = NULL;
1025 JSObject *rotObj = NULL;
1026 JSObject *scaleObj = NULL;
1033 double r0[4], r1[4], r2[4];
1037 _getmatrix(cx,obj,matrix);
1039 _get4f(r0,matrix,0);
1040 _get4f(r1,matrix,1);
1041 _get4f(r2,matrix,2);
1043 l0 = sqrt(r0[0]*r0[0] + r0[1]*r0[1] + r0[2]*r0[2] +r0[3]*r0[3]);
1044 l1 = sqrt(r1[0]*r1[0] + r1[1]*r1[1] + r1[2]*r1[2] +r1[3]*r1[3]);
1045 l2 = sqrt(r2[0]*r2[0] + r2[1]*r2[1] + r2[2]*r2[2] +r2[3]*r2[3]);
1048 if (!JS_ConvertArguments(cx, argc, argv,
"o", &transObj)) {
1049 printf (
"getTransform, invalid parameters\n");
1054 if (!JS_ConvertArguments(cx, argc, argv,
"o o", &transObj, &rotObj)) {
1055 printf (
"getTransform, invalid parameters\n");
1060 if (!JS_ConvertArguments(cx, argc, argv,
"o o o",
1061 &transObj,&rotObj,&scaleObj)) {
1062 printf (
"getTransform, invalid parameters\n");
1068 if (transObj!=NULL) {
1069 CHECK_CLASS(cx,transObj,NULL,__FUNCTION__,SFVec3fClass)
1071 if ((Vptr = (
SFVec3fNative *)JS_GetPrivate(cx, transObj)) == NULL) {
1072 printf(
"JS_GetPrivate failed.\n");
1075 (Vptr->v).c[0] = (
float) matrix[12];
1076 (Vptr->v).c[1] = (
float) matrix[13];
1077 (Vptr->v).c[2] = (
float) matrix[14];
1078 Vptr->valueChanged++;
1084 CHECK_CLASS(cx,rotObj,NULL,__FUNCTION__,SFRotationClass)
1087 printf(
"JS_GetPrivate failed.\n");
1092 _set4f(l0, matrix, 0);
1093 _set4f(l1, matrix, 1);
1094 _set4f(l2, matrix, 2);
1097 matrix_to_quaternion (&quat, matrix);
1098 #ifdef JSVRMLCLASSESVERBOSE
1099 printf (
"quaternion %f %f %f %f\n",quat.x,quat.y,quat.z,quat.w);
1103 quaternion_to_vrmlrot(&quat, &qu[0],&qu[1],&qu[2],&qu[3]);
1106 for (i=0; i<4; i++) (Rptr->v).c[i] = (float) qu[i];
1107 Rptr->valueChanged = 1;
1111 if (scaleObj != NULL) {
1112 CHECK_CLASS(cx,scaleObj,NULL,__FUNCTION__,SFVec3fClass)
1114 if ((Vptr = (
SFVec3fNative*)JS_GetPrivate(cx, scaleObj)) == NULL) {
1115 printf(
"JS_GetPrivate failed.\n");
1118 (Vptr->v).c[0] = (
float) l0;
1119 (Vptr->v).c[1] = (
float) l1;
1120 (Vptr->v).c[2] = (
float) l2;
1121 Vptr->valueChanged = 1;
1124 #if JS_VERSION < 185
1127 JS_SET_RVAL(cx,vp,JSVAL_VOID);
1140 #if JS_VERSION < 185
1141 VrmlMatrixsetTransform(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
1143 VrmlMatrixsetTransform(JSContext *cx, uintN argc, jsval *vp) {
1144 JSObject *obj = JS_THIS_OBJECT(cx,vp);
1145 jsval *argv = JS_ARGV(cx,vp);
1147 JSObject *transObj = NULL;
1148 JSObject *rotObj = NULL;
1149 JSObject *scaleObj = NULL;
1150 JSObject *scaleOObj = NULL;
1151 JSObject *centerObj = NULL;
1160 FW_GL_MATRIX_MODE(GL_MODELVIEW);
1161 FW_GL_PUSH_MATRIX();
1162 FW_GL_LOAD_IDENTITY();
1167 loadIdentityMatrix(matrix);
1170 if (!JS_InstanceOf(cx, obj, &VrmlMatrixClass, NULL)) {
1174 error = !JS_ConvertArguments(cx, argc, argv,
"o", &transObj);
1177 error = !JS_ConvertArguments(cx, argc, argv,
"o o", &transObj,
1181 error = !JS_ConvertArguments(cx, argc, argv,
"o o o",
1182 &transObj,&rotObj,&scaleObj);
1185 error = !JS_ConvertArguments(cx, argc, argv,
"o o o o",
1186 &transObj,&rotObj,&scaleObj,&scaleOObj);
1189 error = !JS_ConvertArguments(cx, argc, argv,
"o o o o o",
1190 &transObj,&rotObj,&scaleObj,&scaleOObj,¢erObj);
1192 if (argc > 5) { error = TRUE; }
1196 ConsoleMessage (
"setTransform: error in parameters");
1201 if (transObj != NULL)
1202 error = !JS_InstanceOf(cx, transObj, &SFVec3fClass, NULL);
1203 if (!error && (rotObj != NULL))
1204 error = !JS_InstanceOf(cx, rotObj, &SFRotationClass, NULL);
1205 if (!error && (scaleObj != NULL))
1206 error = !JS_InstanceOf(cx, scaleObj, &SFVec3fClass, NULL);
1207 if (!error && (scaleOObj != NULL))
1208 error = !JS_InstanceOf(cx, scaleOObj, &SFRotationClass, NULL);
1209 if (!error && centerObj != NULL)
1210 error = !JS_InstanceOf(cx, centerObj, &SFVec3fClass, NULL);
1213 ConsoleMessage (
"setTransform: at least one parameter incorrect type");
1221 error = (Vptr == NULL);
1224 matrix[12]=Vptr->v.c[0];
1225 matrix[13]=Vptr->v.c[1];
1226 matrix[14]=Vptr->v.c[2];
1230 if (!error && (rotObj != NULL)) {
1233 error = (Rptr == NULL);
1237 vrmlrot_to_quaternion(&quat, Rptr->v.c[0], Rptr->v.c[1], Rptr->v.c[2], Rptr->v.c[3]);
1240 quaternion_to_matrix (matrix, &quat);
1244 if (!error && (scaleObj != NULL)) {
1247 error = (Vptr == NULL);
1252 COPY_SFVEC3F_TO_POINT_XYZ (myScale,Vptr->v.c);
1253 scale_to_matrix(matrix, &myScale);
1259 _setmatrix (cx, obj, matrix);
1262 printf (
"calculated Matrix: \n\t%5.2f %5.2f %5.2f %5.2f\n\t%5.2f %5.2f %5.2f %5.2f\n\t%5.2f %5.2f %5.2f %5.2f\n\t%5.2f %5.2f %5.2f %5.2f\n",
1263 matrix[0], matrix[4], matrix[ 8], matrix[12],
1264 matrix[1], matrix[5], matrix[ 9], matrix[13],
1265 matrix[2], matrix[6], matrix[10], matrix[14],
1266 matrix[3], matrix[7], matrix[11], matrix[15]);
1267 glGetDoublev(GL_MODELVIEW,xxmat);
1268 printf (
"modelview Matrix: \n\t%5.2f %5.2f %5.2f %5.2f\n\t%5.2f %5.2f %5.2f %5.2f\n\t%5.2f %5.2f %5.2f %5.2f\n\t%5.2f %5.2f %5.2f %5.2f\n",
1269 xxmat[0], xxmat[4], xxmat[ 8], xxmat[12],
1270 xxmat[1], xxmat[5], xxmat[ 9], xxmat[13],
1271 xxmat[2], xxmat[6], xxmat[10], xxmat[14],
1272 xxmat[3], xxmat[7], xxmat[11], xxmat[15]);
1276 #if JS_VERSION >= 185
1278 JS_SET_RVAL(cx,vp,JSVAL_VOID);
1285 #if JS_VERSION < 185
1286 VrmlMatrixinverse(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
1288 VrmlMatrixinverse(JSContext *cx, uintN argc, jsval *vp) {
1289 JSObject *obj = JS_THIS_OBJECT(cx,vp);
1290 jsval *argv = JS_ARGV(cx,vp);
1298 printf (
"VrmlMatrix, expect 0 parameters\n");
1301 _getmatrix (cx, obj,src);
1302 matinverseFULL (dest,src);
1304 retObj = JS_ConstructObject(cx,&VrmlMatrixClass,NULL, NULL);
1306 _setmatrix(cx,retObj,dest);
1307 #if JS_VERSION < 185
1308 *rval = OBJECT_TO_JSVAL(retObj);
1310 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(retObj));
1317 #if JS_VERSION < 185
1318 VrmlMatrixtranspose(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
1320 VrmlMatrixtranspose(JSContext *cx, uintN argc, jsval *vp) {
1321 JSObject *obj = JS_THIS_OBJECT(cx,vp);
1322 jsval *argv = JS_ARGV(cx,vp);
1330 printf (
"VrmlMatrix, expect 0 parameters\n");
1333 _getmatrix (cx, obj,src);
1334 mattranspose (dest,src);
1336 retObj = JS_ConstructObject(cx,&VrmlMatrixClass,NULL, NULL);
1338 _setmatrix(cx,retObj,dest);
1339 #if JS_VERSION < 185
1340 *rval = OBJECT_TO_JSVAL(retObj);
1342 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(retObj));
1350 #if JS_VERSION < 185
1351 VrmlMatrixmultLeft(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
1353 VrmlMatrixmultLeft(JSContext *cx, uintN argc, jsval *vp) {
1354 JSObject *obj = JS_THIS_OBJECT(cx,vp);
1355 jsval *argv = JS_ARGV(cx,vp);
1357 JSObject *transObj = NULL;
1358 JSObject *retObj = NULL;
1365 error = !JS_ConvertArguments(cx, argc, argv,
"o", &transObj);
1366 }
else error = TRUE;
1368 if (!error)
if (!JS_InstanceOf(cx, transObj, &VrmlMatrixClass, NULL)) { error = TRUE;}
1371 ConsoleMessage (
"VrmlMatrixMultLeft, error in params");
1376 _getmatrix(cx,obj,matrix1);
1377 _getmatrix(cx,transObj,matrix2);
1378 matmultiplyFULL(matrix1,matrix1,matrix2);
1380 retObj = JS_ConstructObject(cx,&VrmlMatrixClass,NULL, NULL);
1389 _setmatrix(cx,retObj,matrix1);
1390 #if JS_VERSION < 185
1391 *rval = OBJECT_TO_JSVAL(retObj);
1393 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(retObj));
1400 #if JS_VERSION < 185
1401 VrmlMatrixmultRight(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
1403 VrmlMatrixmultRight(JSContext *cx, uintN argc, jsval *vp) {
1404 JSObject *obj = JS_THIS_OBJECT(cx,vp);
1405 jsval *argv = JS_ARGV(cx,vp);
1407 JSObject *transObj = NULL;
1408 JSObject *retObj = NULL;
1415 error = !JS_ConvertArguments(cx, argc, argv,
"o", &transObj);
1416 }
else error = TRUE;
1418 if (!error)
if (!JS_InstanceOf(cx, transObj, &VrmlMatrixClass, NULL)) { error = TRUE;}
1421 ConsoleMessage (
"VrmlMatrixMultRight, error in params");
1426 _getmatrix(cx,obj,matrix1);
1427 _getmatrix(cx,transObj,matrix2);
1428 matmultiplyFULL(matrix1,matrix2,matrix1);
1430 retObj = JS_ConstructObject(cx,&VrmlMatrixClass,NULL, NULL);
1439 _setmatrix(cx,retObj,matrix1);
1440 #if JS_VERSION < 185
1441 *rval = OBJECT_TO_JSVAL(retObj);
1443 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(retObj));
1451 #if JS_VERSION < 185
1452 VrmlMatrixmultVecMatrix(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
1454 VrmlMatrixmultVecMatrix(JSContext *cx, uintN argc, jsval *vp) {
1455 JSObject *obj = JS_THIS_OBJECT(cx,vp);
1456 jsval *argv = JS_ARGV(cx,vp);
1458 JSObject *transObj = NULL;
1459 JSObject *retObj = NULL;
1465 outp.x = outp.y = outp.z = 0.0;
1468 error = !JS_ConvertArguments(cx, argc, argv,
"o", &transObj);
1469 }
else error = TRUE;
1471 if (!error)
if (!JS_InstanceOf(cx, transObj, &SFVec3fClass, NULL)) { error = TRUE;}
1473 if ((Vptr = (
SFVec3fNative *)JS_GetPrivate(cx, transObj)) == NULL) {
1478 ConsoleMessage (
"VrmlMatrixMultVec, error in params");
1482 COPY_SFVEC3F_TO_POINT_XYZ(inp,Vptr->v.c);
1485 _getmatrix(cx,obj,matrix1);
1490 matrotate2v(matrix1, inp, outp);
1492 retObj = JS_ConstructObject(cx,&SFVec3fClass,NULL, NULL);
1493 if ((Vptr = (
SFVec3fNative *)JS_GetPrivate(cx, retObj)) == NULL) {
1494 printf (
"error in new VrmlMatrix\n");
1498 COPY_POINT_XYZ_TO_SFVEC3F(Vptr->v.c,outp);
1499 #if JS_VERSION < 185
1500 *rval = OBJECT_TO_JSVAL(retObj);
1502 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(retObj));
1510 #if JS_VERSION < 185
1511 VrmlMatrixmultMatrixVec(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
1513 VrmlMatrixmultMatrixVec(JSContext *cx, uintN argc, jsval *vp) {
1514 JSObject *obj = JS_THIS_OBJECT(cx,vp);
1515 jsval *argv = JS_ARGV(cx,vp);
1517 JSObject *transObj = NULL;
1518 JSObject *retObj = NULL;
1524 outp.x = outp.y = outp.z = 0.0;
1527 error = !JS_ConvertArguments(cx, argc, argv,
"o", &transObj);
1528 }
else error = TRUE;
1530 if (!error)
if (!JS_InstanceOf(cx, transObj, &SFVec3fClass, NULL)) { error = TRUE;}
1532 if ((Vptr = (
SFVec3fNative *)JS_GetPrivate(cx, transObj)) == NULL) {
1537 ConsoleMessage (
"VrmlMatrixMultVec, error in params");
1541 COPY_SFVEC3F_TO_POINT_XYZ(inp,Vptr->v.c);
1544 _getmatrix(cx,obj,matrix1);
1547 mattranspose (matrix1, matrix1);
1549 matrotate2v(matrix1, inp, outp);
1551 retObj = JS_ConstructObject(cx,&SFVec3fClass,NULL, NULL);
1552 if ((Vptr = (
SFVec3fNative *)JS_GetPrivate(cx, retObj)) == NULL) {
1553 printf (
"error in new VrmlMatrix\n");
1557 COPY_POINT_XYZ_TO_SFVEC3F(Vptr->v.c,outp);
1558 #if JS_VERSION < 185
1559 *rval = OBJECT_TO_JSVAL(retObj);
1561 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(retObj));
1569 #if JS_VERSION < 185
1570 VrmlMatrixAssign(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
1571 return _standardMFAssign (cx, obj, argc, argv, rval, &VrmlMatrixClass,FIELDTYPE_FreeWRLPTR);
1573 VrmlMatrixAssign(JSContext *cx, uintN argc, jsval *vp) {
1574 JSObject *obj = JS_THIS_OBJECT(cx,vp);
1575 jsval *argv = JS_ARGV(cx,vp);
1577 if (!_standardMFAssign (cx, obj, argc, argv, &rval, &VrmlMatrixClass,FIELDTYPE_FreeWRLPTR)) {
return JS_FALSE; }
1578 JS_SET_RVAL(cx,vp,rval);
1584 #if JS_VERSION < 185
1585 VrmlMatrixConstr(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
1587 VrmlMatrixConstr(JSContext *cx, uintN argc, jsval *vp) {
1588 JSObject *obj = JS_NewObject(cx,&VrmlMatrixClass,NULL,NULL);
1589 jsval *argv = JS_ARGV(cx,vp);
1590 jsval rval = OBJECT_TO_JSVAL(obj);
1591 if (!VrmlMatrixConstrInternals(cx,obj,argc,argv,&rval)) {
return JS_FALSE; }
1592 JS_SET_RVAL(cx,vp,rval);
1595 JSBool VrmlMatrixConstrInternals(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
1602 if ((argc != 16) && (argc != 0)) {
1603 printf (
"VrmlMatrixConstr - require either 16 or no values\n");
1607 DEFINE_LENGTH(cx,obj,16)
1610 for (i = 0; i < 16; i++) {
1611 if (!JS_ValueToNumber(cx, argv[i], &_d)) {
1613 "JS_ValueToNumber failed in VrmlMatrixConstr.\n");
1617 if (!JS_DefineElement(cx, obj, (jsint) i, argv[i], JS_GET_PROPERTY_STUB, JS_SET_PROPERTY_CHECK, JSPROP_ENUMERATE)) {
1618 printf(
"JS_DefineElement failed for arg %u in VrmlMatrixConstr.\n", i);
1625 loadIdentityMatrix(matrix);
1626 _setmatrix (cx, obj, matrix);
1628 *rval = OBJECT_TO_JSVAL(obj);
1633 #if JS_VERSION < 185
1634 VrmlMatrixAddProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp) {
1636 VrmlMatrixAddProperty(JSContext *cx, JSObject *obj, jsid
id, jsval *vp) {
1638 return doMFAddProperty(cx, obj,
id, vp,
"VrmlMatrixAddProperty");
1642 #if JS_VERSION < 185
1643 VrmlMatrixGetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp)
1645 VrmlMatrixGetProperty(JSContext *cx, JSObject *obj, jsid iid, jsval *vp)
1648 int32 _length, _index;
1651 #if JS_VERSION >= 185
1653 if (!JS_IdToValue(cx,iid,&
id)) {
1654 printf(
"JS_IdToValue failed in VrmlMatrixGetproperty.\n");
1659 if (!JS_GetProperty(cx, obj, MF_LENGTH_FIELD, &_length_val)) {
1660 printf(
"JS_GetProperty failed for \"%s\" in VrmlMatrixGetProperty.\n", MF_LENGTH_FIELD);
1663 _length = JSVAL_TO_INT(_length_val);
1683 if (JSVAL_IS_INT(
id)) {
1684 _index = JSVAL_TO_INT(
id);
1686 if (_index >= _length) {
1687 JS_NewNumberValue(cx,0.0,vp);
1688 if (!JS_DefineElement(cx, obj, (jsint) _index, *vp, JS_GET_PROPERTY_STUB, JS_SET_PROPERTY_CHECK, JSPROP_ENUMERATE)) {
1689 printf(
"JS_DefineElement failed in VrmlMatrixGetProperty.\n");
1693 if (!JS_LookupElement(cx, obj, _index, vp)) {
1695 "JS_LookupElement failed in VrmlMatrixGetProperty.\n");
1698 if (JSVAL_IS_NULL(*vp)) {
1699 printf(
"VrmlMatrixGetProperty: obj = %p, jsval = %d does not exist!\n",
1704 }
else if (JSVAL_IS_OBJECT(
id)) {
1711 #if JS_VERSION < 185
1712 VrmlMatrixSetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp) {
1714 VrmlMatrixSetProperty(JSContext *cx, JSObject *obj, jsid
id, JSBool strict, jsval *vp) {
1716 return doMFSetProperty(cx, obj,
id, vp,1000);
1721 #if JS_VERSION < 185
1722 MFRotationAddProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp) {
1724 MFRotationAddProperty(JSContext *cx, JSObject *obj, jsid
id, jsval *vp) {
1726 return doMFAddProperty(cx, obj,
id, vp,
"MFRotationAddProperty");
1730 #if JS_VERSION < 185
1731 MFRotationGetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp) {
1733 MFRotationGetProperty(JSContext *cx, JSObject *obj, jsid
id, jsval *vp) {
1735 return _standardMFGetProperty(cx, obj,
id, vp,
1736 "_FreeWRL_Internal = new SFRotation()",FIELDTYPE_MFRotation);
1740 #if JS_VERSION < 185
1741 MFRotationSetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp) {
1743 MFRotationSetProperty(JSContext *cx, JSObject *obj, jsid
id, JSBool strict, jsval *vp) {
1745 return doMFSetProperty(cx, obj,
id, vp,FIELDTYPE_MFRotation);
1749 #if JS_VERSION < 185
1750 MFRotationToString(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
1752 MFRotationToString(JSContext *cx, uintN argc, jsval *vp) {
1753 JSObject *obj = JS_THIS_OBJECT(cx,vp);
1754 jsval *argv = JS_ARGV(cx,vp);
1759 #if JS_VERSION < 185
1760 return doMFToString(cx, obj,
"MFRotation", rval);
1762 if (!doMFToString(cx, obj,
"MFRotation", &rval)) {
return JS_FALSE; }
1763 JS_SET_RVAL(cx,vp,rval);
1769 #if JS_VERSION < 185
1770 MFRotationConstr(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
1772 MFRotationConstr(JSContext *cx, uintN argc, jsval *vp) {
1773 JSObject *obj = JS_NewObject(cx,&MFRotationClass,NULL,NULL);
1774 jsval *argv = JS_ARGV(cx,vp);
1775 jsval rval = OBJECT_TO_JSVAL(obj);
1776 if (!MFRotationConstrInternals(cx,obj,argc,argv,&rval)) {
return JS_FALSE; }
1777 JS_SET_RVAL(cx,vp,rval);
1780 JSBool MFRotationConstrInternals(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
1786 DEFINE_LENGTH(cx,obj,argc)
1792 #ifdef JSVRMLCLASSESVERBOSE
1793 printf(
"MFRotationConstr: obj = %p, %u args\n", obj, argc);
1795 for (i = 0; i < argc; i++) {
1796 if (!JS_ValueToObject(cx, argv[i], &_obj)) {
1798 "JS_ValueToObject failed in MFRotationConstr.\n");
1802 CHECK_CLASS(cx,_obj,NULL,__FUNCTION__,SFRotationClass)
1804 if (!JS_DefineElement(cx, obj, (jsint) i, argv[i], JS_GET_PROPERTY_STUB, JS_SET_PROPERTY_CHECK, JSPROP_ENUMERATE)) {
1805 printf(
"JS_DefineElement failed for arg %d in MFRotationConstr.\n", i);
1809 *rval = OBJECT_TO_JSVAL(obj);
1814 #if JS_VERSION < 185
1815 MFRotationAssign(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
1816 return _standardMFAssign (cx, obj, argc, argv, rval, &MFRotationClass,FIELDTYPE_SFRotation);
1818 MFRotationAssign(JSContext *cx, uintN argc, jsval *vp) {
1819 JSObject *obj = JS_THIS_OBJECT(cx,vp);
1820 jsval *argv = JS_ARGV(cx,vp);
1823 if (!_standardMFAssign (cx, obj, argc, argv, &rval, &MFRotationClass,FIELDTYPE_SFRotation)) {
return JS_FALSE; }
1824 JS_SET_RVAL(cx,vp,rval);
1831 #if JS_VERSION < 185
1832 MFStringAddProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp) {
1834 MFStringAddProperty(JSContext *cx, JSObject *obj, jsid iid, jsval *vp) {
1836 if (!JS_IdToValue(cx,iid,&
id)) {
1837 printf(
"JS_IdToValue failed in MFStringAddProperty\n");
1842 #ifdef JSVRMLCLASSESVERBOSE
1843 printf(
"MFStringAddProperty: vp = %p\n", obj);
1844 if (JSVAL_IS_STRING(*vp)==TRUE) {
1845 printf(
" is a common string :%s:\n",
1846 #
if JS_VERSION < 185
1847 JS_GetStringBytes(JS_ValueToString(cx, *vp)));
1849 JS_EncodeString(cx,JS_ValueToString(cx, *vp)));
1852 if (JSVAL_IS_OBJECT(*vp)==TRUE) {
1853 printf (
" parameter is an object\n");
1855 if (JSVAL_IS_PRIMITIVE(*vp)==TRUE) {
1856 printf (
" parameter is a primitive\n");
1858 if (JSVAL_IS_NULL(*vp)) { printf (
" - its a NULL\n");}
1859 if (JSVAL_IS_INT(*vp)) { printf (
" - its a INT %d\n",JSVAL_TO_INT(*vp));}
1861 printf(
"MFStringAddProperty: id = %p\n", obj);
1862 if (JSVAL_IS_STRING(
id)==TRUE) {
1863 printf(
" is a common string :%s:\n",
1864 #
if JS_VERSION < 185
1865 JS_GetStringBytes(JS_ValueToString(cx,
id)));
1867 JS_EncodeString(cx,JS_ValueToString(cx,
id)));
1870 if (JSVAL_IS_OBJECT(
id)==TRUE) {
1871 printf (
" parameter is an object\n");
1873 if (JSVAL_IS_PRIMITIVE(
id)==TRUE) {
1874 printf (
" parameter is a primitive\n");
1876 if (JSVAL_IS_NULL(
id)) { printf (
" - its a NULL\n");}
1877 if (JSVAL_IS_INT(
id)) { printf (
" - its a INT %d\n",JSVAL_TO_INT(
id));}
1883 if (JSVAL_IS_STRING(*vp)) {
1884 if (!doMFStringUnquote(cx, vp)) {
1886 "doMFStringUnquote failed in MFStringAddProperty.\n");
1890 #if JS_VERSION < 185
1891 return doMFAddProperty(cx, obj,
id, vp,
"MFStringAddProperty");
1893 return doMFAddProperty(cx, obj, iid, vp,
"MFStringAddProperty");
1899 #if JS_VERSION < 185
1900 MFStringGetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp)
1902 MFStringGetProperty(JSContext *cx, JSObject *obj, jsid iid, jsval *vp)
1906 int32 _length, _index;
1908 #if JS_VERSION >= 185
1910 if (!JS_IdToValue(cx,iid,&
id)) {
1911 printf(
"JS_IdToValue failed in MFStringGetProperty\n");
1916 #ifdef JSVRMLCLASSESVERBOSE
1917 printf(
"MFStringGetProperty: obj = %p\n", obj);
1920 if (!JS_GetProperty(cx, obj, MF_LENGTH_FIELD, &_length_val)) {
1921 printf(
"JS_GetProperty failed for \"%s\" in MFStringGetProperty.\n", MF_LENGTH_FIELD);
1924 _length = JSVAL_TO_INT(_length_val);
1926 if (JSVAL_IS_INT(
id)) {
1927 _index = JSVAL_TO_INT(
id);
1929 if (_index >= _length) {
1930 _str = JS_NewStringCopyZ(cx,
"");
1931 *vp = STRING_TO_JSVAL(_str);
1932 if (!JS_DefineElement(cx, obj, (jsint) _index, *vp, JS_GET_PROPERTY_STUB, JS_SET_PROPERTY_CHECK, JSPROP_ENUMERATE)) {
1933 printf(
"JS_DefineElement failed in MFStringGetProperty.\n");
1937 if (!JS_LookupElement(cx, obj, _index, vp)) {
1938 printf(
"JS_LookupElement failed in MFStringGetProperty.\n");
1941 if (JSVAL_IS_NULL(*vp)) {
1944 _str = JS_NewStringCopyZ(cx,
"NULL");
1945 *vp = STRING_TO_JSVAL(_str);
1946 if (!JS_DefineElement(cx, obj, (jsint) _index, *vp, JS_GET_PROPERTY_STUB, JS_SET_PROPERTY_CHECK, JSPROP_ENUMERATE)) {
1947 printf(
"JS_DefineElement failed in MFStringGetProperty.\n");
1958 #if JS_VERSION < 185
1959 MFStringSetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp)
1961 MFStringSetProperty(JSContext *cx, JSObject *obj, jsid
id, JSBool strict, jsval *vp)
1966 #ifdef JSVRMLCLASSESVERBOSE
1967 printf(
"MFStringSetProperty: obj = %p id %d jsval %u\n", obj,
id, (
unsigned int)*vp);
1969 printf (
"MFStringSetProperty, setting vp of type...\n");
1970 if (JSVAL_IS_OBJECT(*vp)) { printf (
" - MFStringSetProperty, vp is a OBJECT\n");}
1971 if (JSVAL_IS_PRIMITIVE(*vp)) { printf (
" - MFStringSetProperty, vp is a PRIMITIVE\n");}
1972 if (JSVAL_IS_NULL(*vp)) { printf (
" - MFStringSetProperty, vp is a NULL\n");}
1973 if (JSVAL_IS_STRING(*vp)) { printf (
" - MFStringSetProperty, vp is a STRING\n");}
1974 if (JSVAL_IS_INT(*vp)) { printf (
" - MFStringSetProperty, vp is a INT %d\n",JSVAL_TO_INT(*vp));}
1980 if (JSVAL_IS_STRING(*vp)) {
1981 if (!doMFStringUnquote(cx, vp)) {
1983 "doMFStringUnquote failed in MFStringSetProperty.\n");
1987 rv = doMFSetProperty(cx, obj,
id, vp,FIELDTYPE_MFString);
1988 #ifdef JSVRMLCLASSESVERBOSE
1989 printf (
"returning from MFStringSetProperty\n");
1997 #if JS_VERSION < 185
1998 MFStringToString(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
2000 MFStringToString(JSContext *cx, uintN argc, jsval *vp) {
2001 JSObject *obj = JS_THIS_OBJECT(cx,vp);
2002 jsval *argv = JS_ARGV(cx,vp);
2007 #ifdef JSVRMLCLASSESVERBOSE
2008 printf(
"MFStringToString: obj = %p, %u args\n", obj, argc);
2012 #if JS_VERSION < 185
2013 return doMFToString(cx, obj,
"MFString", rval);
2015 if (!doMFToString(cx, obj,
"MFString", &rval)) {
return JS_FALSE; }
2016 JS_SET_RVAL(cx,vp,rval);
2023 #if JS_VERSION < 185
2024 MFStringConstr(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
2026 MFStringConstr(JSContext *cx, uintN argc, jsval *vp) {
2027 JSObject *obj = JS_NewObject(cx,&MFStringClass,NULL,NULL);
2028 jsval *argv = JS_ARGV(cx,vp);
2029 jsval rval = OBJECT_TO_JSVAL(obj);
2030 if (!MFStringConstrInternals(cx,obj,argc,argv,&rval)) {
return JS_FALSE; }
2031 JS_SET_RVAL(cx,vp,rval);
2034 JSBool MFStringConstrInternals(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
2040 #ifdef JSVRMLCLASSESVERBOSE
2042 printf(
"MFStringConstr: cx %p, obj %p args %d rval %p parent %p... ", cx, obj, argc, rval, JS_GetParent(cx, obj));
2046 DEFINE_LENGTH(cx,obj,argc)
2047 DEFINE_MF_ECMA_HAS_CHANGED
2053 for (i = 0; i < argc; i++) {
2054 #ifdef JSVRMLCLASSESVERBOSE
2055 printf (
"argv %d is a ...",i);
2057 if (JSVAL_IS_STRING(argv[i])==TRUE) {
2058 printf (
" Common String, is");
2059 _str = JS_ValueToString(cx, argv[i]);
2060 #if JS_VERSION < 185
2061 printf (
" %s",JS_GetStringBytes(_str));
2063 printf (
" %s",JS_EncodeString(cx,_str));
2068 if (JSVAL_IS_OBJECT(argv[i])==TRUE) {
2069 printf (
" is an object");
2071 if (JSVAL_IS_PRIMITIVE(argv[i])==TRUE) {
2072 printf (
" is a primitive");
2075 if ((_str = JS_ValueToString(cx, argv[i])) == NULL) {
2076 printf(
"JS_ValueToString failed in MFStringConstr.");
2083 if (!JS_DefineElement(cx, obj, (jsint) i, argv[i], JS_GET_PROPERTY_STUB, JS_SET_PROPERTY_CHECK, JSPROP_ENUMERATE)) {
2084 printf(
"JS_DefineElement failed for arg %d in MFStringConstr.\n", i);
2088 *rval = OBJECT_TO_JSVAL(obj);
2090 #ifdef JSVRMLCLASSESVERBOSE
2091 printf (
"finished MFStringConstr\n");
2098 #if JS_VERSION < 185
2099 MFStringAssign(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
2101 MFStringAssign(JSContext *cx, uintN argc, jsval *vp) {
2102 JSObject *obj = JS_THIS_OBJECT(cx,vp);
2103 jsval *argv = JS_ARGV(cx,vp);
2107 #ifdef JSVRMLCLASSESVERBOSE
2108 printf(
"MFStringAssign: obj = %p args %d... ", obj, argc);
2110 SET_MF_ECMA_HAS_CHANGED
2112 #if JS_VERSION < 185
2113 return _standardMFAssign (cx, obj, argc, argv, rval, &MFStringClass,FIELDTYPE_SFString);
2115 if (!_standardMFAssign (cx, obj, argc, argv, &rval, &MFStringClass,FIELDTYPE_SFString)) {
return JS_FALSE; }
2116 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
2122 #if JS_VERSION < 185
2123 JSBool MFStringDeleteProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp) {
2125 JSBool MFStringDeleteProperty(JSContext *cx, JSObject *obj, jsid
id, jsval *vp) {
2127 #ifdef JSVRMLCLASSESVERBOSE
2128 printf (
"MFStringDeleteProperty\n");
2132 JSBool MFStringEnumerateProperty(JSContext *cx, JSObject *obj) {
2133 #ifdef JSVRMLCLASSESVERBOSE
2134 printf (
"MFStringEnumerateProperty\n");
2139 #if JS_VERSION < 185
2140 JSBool MFStringResolveProperty(JSContext *cx, JSObject *obj, jsval
id) {
2142 JSBool MFStringResolveProperty(JSContext *cx, JSObject *obj, jsid
id) {
2144 #ifdef JSVRMLCLASSESVERBOSE
2145 printf (
"MFStringResolveProperty\n");
2149 JSBool MFStringConvertProperty(JSContext *cx, JSObject *obj, JSType type, jsval *vp) {
2150 #ifdef JSVRMLCLASSESVERBOSE
2151 printf (
"MFStringConvertProperty\n");