40#define STRING_SIZE 256
44#define jsuint uint32_t
46#define jsdouble double
48#define JS_FinalizeStub NULL
65#include "../scenegraph/LinearAlgebra.h"
66#include "../scenegraph/quaternion.h"
86#include "jsUtils_sm.h"
87#include "jsVRMLClasses_sm.h"
99JS_MY_Finalize(JSContext *cx, JSObject *obj){
101JS_MY_Finalize(JSFreeOp *fop, JSObject *obj){
114 ptr = (
void*)JS_GetPrivate(obj);
116 if (SM_method() == 0)
118 if (SM_method() == 2) {
120 AnyNative* any = (AnyNative*)ptr;
122 if (any->type % 2 == 1)
123 FREE_IF_NZ(any->v->mffloat.p);
135 #ifdef JSVRMLCLASSESVERBOSE
137 printf (
"Finalize - no private data!\n");
145MFColorToString(JSContext *cx, uintN argc, jsval *vp) {
146 JSObject *obj = JS_THIS_OBJECT(cx,vp);
147 jsval *argv = JS_ARGV(cx,vp);
152 if (!doMFToString(cx, obj,
"MFColor", &rval)) {
return JS_FALSE; }
153 JS_SET_RVAL(cx,vp,rval);
159MFColorAssign(JSContext *cx, uintN argc, jsval *vp) {
160 JSObject *obj = JS_THIS_OBJECT(cx,vp);
161 jsval *argv = JS_ARGV(cx,vp);
163 if (!_standardMFAssign (cx, obj, argc, argv, &rval, &MFColorClass,FIELDTYPE_SFColor)) {
return JS_FALSE; }
164 JS_SET_RVAL(cx,vp,rval);
170MFColorConstr(JSContext *cx, uintN argc, jsval *vp) {
171 JSObject *obj = JS_NewObject(cx,&MFColorClass,NULL,NULL);
172 jsval *argv = JS_ARGV(cx,vp);
173 jsval rval = OBJECT_TO_JSVAL(obj);
174 if (!MFColorConstrInternals(cx,obj,argc,argv,&rval)) {
return JS_FALSE; }
175 JS_SET_RVAL(cx,vp,rval);
178JSBool MFColorConstrInternals(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
189 if(argc == 1 && argv){
192 if (!JS_ValueToObject(cx, argv[0], &_arrayObj)) {
193 printf(
"JS_ValueToObject failed in MFVec3fConstr.\n");
197 if(JS_IsArrayObject(cx, _arrayObj)){
202 JS_GetArrayLength(cx,_arrayObj, &lengthp);
207 if(SM_method() == 2){
210 if((any = (AnyNative*)AnyNativeNew(FIELDTYPE_MFColor,NULL,NULL)) == NULL){
211 printf(
"AnyfNativeNew failed in MFColorConstr.\n");
214 if (!JS_SetPrivateFw(cx, obj, any)) {
215 printf(
"JS_SetPrivate failed in MFColorConstr.\n");
219 newsize =
sizeof(
struct SFColor)*upper_power_of_two(argc);
221 anyv->mfcolor.p = MALLOC(
struct SFColor*,newsize);
222 memset(anyv->mfcolor.p,0,newsize);
226 DEFINE_LENGTH(cx,obj,argc)
232 #ifdef JSVRMLCLASSESVERBOSE
233 printf(
"MFColorConstr: obj = %p, %u args\n",
237 for (i = 0; i < argc; i++) {
240 JS_GetElement(cx, _arrayObj, i, &vp);
245 if (!JS_ValueToObject(cx, vp, &_obj)) {
247 "JS_ValueToObject failed in MFColorConstr.\n");
251 CHECK_CLASS(cx,_obj,NULL,__FUNCTION__,SFColorClass)
254 if((any2 = (AnyNative *)JS_GetPrivateFw(cx,_obj)) != NULL){
257 if(any2->type == FIELDTYPE_SFColor || any2->type == FIELDTYPE_SFVec3f || any2->type == FIELDTYPE_SFColorRGBA){
258 shallow_copy_field(FIELDTYPE_SFColor,any2->v,(
union anyVrml*)&anyv->mfcolor.p[i]);
259 anyv->mfcolor.n = i+1;
264 if (!JS_DefineElement(cx, obj, (jsint) i, vp, JS_GET_PROPERTY_STUB, JS_SET_PROPERTY_CHECK, JSPROP_ENUMERATE)) {
265 printf(
"JS_DefineElement failed for arg %u in MFColorConstr.\n", i);
270 *rval = OBJECT_TO_JSVAL(obj);
276MFColorAddProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp){
277 JSObject *obj = *hobj.address();
278 jsid
id = *hiid.address();
279 jsval *vp = hvp.address();
281 return doMFAddProperty(cx, obj,
id, vp,
"MFColorAddProperty");
285MFColorGetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp){
286 JSObject *obj = *hobj.address();
287 jsid
id = *hiid.address();
288 jsval *vp = hvp.address();
290 return _standardMFGetProperty(cx, obj,
id, vp,
291 "_FreeWRL_Internal = new SFColor()", FIELDTYPE_MFColor);
295MFColorSetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp){
296 JSObject *obj = *hobj.address();
297 jsid
id = *hiid.address();
298 jsval *vp = hvp.address();
300 return doMFSetProperty(cx, obj,
id, vp,FIELDTYPE_MFColor);
305MFColorRGBAToString(JSContext* cx, uintN argc, jsval* vp) {
306 JSObject* obj = JS_THIS_OBJECT(cx, vp);
307 jsval* argv = JS_ARGV(cx, vp);
312 if (!doMFToString(cx, obj,
"MFColorRGBA", &rval)) {
return JS_FALSE; }
313 JS_SET_RVAL(cx, vp, rval);
319MFColorRGBAAssign(JSContext* cx, uintN argc, jsval* vp) {
320 JSObject* obj = JS_THIS_OBJECT(cx, vp);
321 jsval* argv = JS_ARGV(cx, vp);
323 if (!_standardMFAssign(cx, obj, argc, argv, &rval, &MFColorRGBAClass, FIELDTYPE_SFColorRGBA)) {
return JS_FALSE; }
324 JS_SET_RVAL(cx, vp, rval);
330MFColorRGBAConstr(JSContext* cx, uintN argc, jsval* vp) {
331 JSObject* obj = JS_NewObject(cx, &MFColorRGBAClass, NULL, NULL);
332 jsval* argv = JS_ARGV(cx, vp);
333 jsval rval = OBJECT_TO_JSVAL(obj);
334 if (!MFColorRGBAConstrInternals(cx, obj, argc, argv, &rval)) {
return JS_FALSE; }
335 JS_SET_RVAL(cx, vp, rval);
338JSBool MFColorRGBAConstrInternals(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval) {
349 if (argc == 1 && argv) {
352 if (!JS_ValueToObject(cx, argv[0], &_arrayObj)) {
353 printf(
"JS_ValueToObject failed in MFVec3fConstr.\n");
357 if (JS_IsArrayObject(cx, _arrayObj)) {
362 JS_GetArrayLength(cx, _arrayObj, &lengthp);
367 if (SM_method() == 2) {
370 if ((any = (AnyNative*)AnyNativeNew(FIELDTYPE_MFColorRGBA, NULL, NULL)) == NULL) {
371 printf(
"AnyfNativeNew failed in MFColorRGBAConstr.\n");
374 if (!JS_SetPrivateFw(cx, obj, any)) {
375 printf(
"JS_SetPrivate failed in MFColorRGBAConstr.\n");
379 newsize =
sizeof(
struct SFColorRGBA) * upper_power_of_two(argc);
381 anyv->mfcolorrgba.p = MALLOC(
struct SFColorRGBA*, newsize);
382 memset(anyv->mfcolorrgba.p, 0, newsize);
387 DEFINE_LENGTH(cx, obj, argc)
393#ifdef JSVRMLCLASSESVERBOSE
394 printf(
"MFColorRGBAConstr: obj = %p, %u args\n",
398 for (i = 0; i < argc; i++) {
401 JS_GetElement(cx, _arrayObj, i, &vp);
407 if (!JS_ValueToObject(cx, vp, &_obj)) {
409 "JS_ValueToObject failed in MFColorRGBAConstr.\n");
413 CHECK_CLASS(cx, _obj, NULL, __FUNCTION__, SFColorRGBAClass)
414 if (SM_method() == 2) {
416 if ((any2 = (AnyNative*)JS_GetPrivateFw(cx, _obj)) != NULL) {
419 if (any2->type == FIELDTYPE_SFColorRGBA || any2->type == FIELDTYPE_SFVec4f) {
420 shallow_copy_field(FIELDTYPE_SFColorRGBA, any2->v, (
union anyVrml*)&anyv->mfcolorrgba.p[i]);
421 anyv->mfcolorrgba.n = i + 1;
427 if (!JS_DefineElement(cx, obj, (jsint)i, vp, JS_GET_PROPERTY_STUB, JS_SET_PROPERTY_CHECK, JSPROP_ENUMERATE)) {
428 printf(
"JS_DefineElement failed for arg %u in MFColorRGBAConstr.\n", i);
433 *rval = OBJECT_TO_JSVAL(obj);
439MFColorRGBAAddProperty(JSContext* cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp) {
440 JSObject* obj = *hobj.address();
441 jsid
id = *hiid.address();
442 jsval* vp = hvp.address();
444 return doMFAddProperty(cx, obj,
id, vp,
"MFColorRGBAAddProperty");
448MFColorRGBAGetProperty(JSContext* cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp) {
449 JSObject* obj = *hobj.address();
450 jsid
id = *hiid.address();
451 jsval* vp = hvp.address();
453 return _standardMFGetProperty(cx, obj,
id, vp,
454 "_FreeWRL_Internal = new SFColorRGBA()", FIELDTYPE_MFColorRGBA);
458MFColorRGBASetProperty(JSContext* cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp) {
459 JSObject* obj = *hobj.address();
460 jsid
id = *hiid.address();
461 jsval* vp = hvp.address();
463 return doMFSetProperty(cx, obj,
id, vp, FIELDTYPE_MFColorRGBA);
469MFFloatToString(JSContext *cx, uintN argc, jsval *vp) {
470 JSObject *obj = JS_THIS_OBJECT(cx,vp);
471 jsval *argv = JS_ARGV(cx,vp);
476 if (!doMFToString(cx, obj,
"MFFloat", &rval)) {
478 JS_SET_RVAL(cx,vp,rval);
484MFFloatAssign(JSContext *cx, uintN argc, jsval *vp) {
485 JSObject *obj = JS_THIS_OBJECT(cx,vp);
486 jsval *argv = JS_ARGV(cx,vp);
488 SET_MF_ECMA_HAS_CHANGED
490 if (!_standardMFAssign (cx, obj, argc, argv, &rval, &MFFloatClass,FIELDTYPE_SFFloat)) {
return JS_FALSE; }
491 JS_SET_RVAL(cx,vp,rval);
496MFFloatConstr(JSContext *cx, uintN argc, jsval *vp) {
497 JSObject* obj = JS_NewObject(cx, &MFFloatClass, NULL, NULL);
498 jsval *argv = JS_ARGV(cx,vp);
499 jsval rval = OBJECT_TO_JSVAL(obj);
500 if (!MFFloatConstrInternals(cx,obj,argc,argv,&rval)) {
return JS_FALSE; }
501 JS_SET_RVAL(cx,vp,rval);
504JSBool MFFloatConstrInternals(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
516 if(argc == 1 && argv){
519 if (!JS_ValueToObject(cx, argv[0], &_arrayObj)) {
520 printf(
"JS_ValueToObject failed in MFVec3fConstr.\n");
524 if(JS_IsArrayObject(cx, _arrayObj)){
529 JS_GetArrayLength(cx,_arrayObj, &lengthp);
534 if(SM_method() == 2){
536 if((any = (AnyNative*)AnyNativeNew(FIELDTYPE_MFFloat,NULL,NULL)) == NULL){
537 printf(
"AnyfNativeNew failed in MFFloatConstr.\n");
540 if (!JS_SetPrivateFw(cx, obj, any)) {
541 printf(
"JS_SetPrivate failed in MFFloatConstr.\n");
546 anyv->mffloat.p = (
float*)malloc(
sizeof(
float)*upper_power_of_two(argc));
549 DEFINE_LENGTH(cx,obj,argc)
550 DEFINE_MF_ECMA_HAS_CHANGED
557 #ifdef JSVRMLCLASSESVERBOSE
558 printf(
"MFFloatConstr: obj = %p, %u args\n", obj, argc);
560 for (i = 0; i < argc; i++) {
563 JS_GetElement(cx, _arrayObj, i, &vp);
568 if (!JS_ValueToNumber(cx, vp, &_d)) {
569 printf(
"JS_ValueToNumber failed in MFFloatConstr.\n");
573 anyv->mffloat.p[i] = _d;
574 anyv->mffloat.n = i+1;
576 if (!JS_DefineElement(cx, obj, (jsint) i, vp, JS_GET_PROPERTY_STUB, JS_SET_PROPERTY_CHECK, JSPROP_ENUMERATE)) {
577 printf(
"JS_DefineElement failed for arg %u in MFFloatConstr.\n", i);
582 *rval = OBJECT_TO_JSVAL(obj);
587MFFloatAddProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp){
588 JSObject *obj = *hobj.address();
589 jsid
id = *hiid.address();
590 jsval *vp = hvp.address();
591 return doMFAddProperty(cx, obj,
id, vp,
"MFFloatAddProperty");
595MFFloatGetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp){
596 JSObject *obj = *hobj.address();
597 jsid
id = *hiid.address();
598 jsval *vp = hvp.address();
600 return _standardMFGetProperty(cx, obj,
id, vp,
601 "_FreeWRL_Internal = 0.0", FIELDTYPE_MFFloat);
605MFFloatSetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp){
606 JSObject *obj = *hobj.address();
607 jsid
id = *hiid.address();
608 jsval *vp = hvp.address();
610 return doMFSetProperty(cx, obj,
id, vp,FIELDTYPE_MFFloat);
615MFInt32ToString(JSContext *cx, uintN argc, jsval *vp) {
616 JSObject *obj = JS_THIS_OBJECT(cx,vp);
617 jsval *argv = JS_ARGV(cx,vp);
622 #ifdef JSVRMLCLASSESVERBOSE
623 printf (
"start of MFInt32ToString\n");
626 if (!doMFToString(cx, obj,
"MFInt32", &rval)) {
return JS_FALSE; }
627 JS_SET_RVAL(cx,vp,rval);
633MFInt32Assign(JSContext *cx, uintN argc, jsval *vp) {
634 JSObject *obj = JS_THIS_OBJECT(cx,vp);
635 jsval *argv = JS_ARGV(cx,vp);
638 #ifdef JSVRMLCLASSESVERBOSE
639 printf (
"start of MFInt32Assign\n");
642 SET_MF_ECMA_HAS_CHANGED
644 if (!_standardMFAssign (cx, obj, argc, argv, &rval, &MFInt32Class,FIELDTYPE_SFInt32)) {
return JS_FALSE; }
645 JS_SET_RVAL(cx,vp,rval);
652MFInt32Constr(JSContext *cx, uintN argc, jsval *vp) {
653 JSObject *obj = JS_NewObject(cx,&MFInt32Class,NULL,NULL);
654 jsval *argv = JS_ARGV(cx,vp);
655 jsval rval = OBJECT_TO_JSVAL(obj);
656 if (!MFInt32ConstrInternals(cx,obj,argc,argv,&rval)) {
return JS_FALSE; }
657 JS_SET_RVAL(cx,vp,rval);
660JSBool MFInt32ConstrInternals(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
667 #ifdef JSVRMLCLASSESVERBOSE
668 printf (
"start of MFInt32Constr\n");
673 if(argc == 1 && argv){
676 if (!JS_ValueToObject(cx, argv[0], &_arrayObj)) {
677 printf(
"JS_ValueToObject failed in MFVec3fConstr.\n");
681 if(JS_IsArrayObject(cx, _arrayObj)){
686 JS_GetArrayLength(cx,_arrayObj, &lengthp);
691 if(SM_method() == 2){
694 if((any = (AnyNative*)AnyNativeNew(FIELDTYPE_MFInt32,NULL,NULL)) == NULL){
695 printf(
"AnyfNativeNew failed in MFInt32Constr.\n");
698 if (!JS_SetPrivateFw(cx, obj, any)) {
699 printf(
"JS_SetPrivate failed in MFInt32Constr.\n");
703 newsize =
sizeof(int) * upper_power_of_two(argc);
705 anyv->mfint32.p = MALLOC(
int*,newsize);
706 memset(anyv->mfint32.p,0,newsize);
710 DEFINE_LENGTH(cx,obj,argc)
711 DEFINE_MF_ECMA_HAS_CHANGED
717 #ifdef JSVRMLCLASSESVERBOSE
718 printf(
"MFInt32Constr: obj = %p, %u args\n", obj, argc);
722 for (i = 0; i < argc; i++) {
725 JS_GetElement(cx, _arrayObj, i, &vp);
733 printf(
"JS_ValueToInt32 failed in MFInt32Constr.\n");
737 #ifdef JSVRMLCLASSESVERBOSE
738 printf (
"value at %d is %d\n",i,_i);
741 anyv->mfint32.p[i] = _i;
742 anyv->mfint32.n = i+1;
744 if (!JS_DefineElement(cx, obj, (jsint) i, vp, JS_GET_PROPERTY_STUB, JS_SET_PROPERTY_CHECK, JSPROP_ENUMERATE)) {
745 printf(
"JS_DefineElement failed for arg %u in MFInt32Constr.\n", i);
751 *rval = OBJECT_TO_JSVAL(obj);
756MFInt32AddProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp){
757 JSObject *obj = *hobj.address();
758 jsid
id = *hiid.address();
759 jsval *vp = hvp.address();
761 #ifdef JSVRMLCLASSESVERBOSE
762 printf (
"start of MFInt32AddProperty\n");
765 return doMFAddProperty(cx, obj,
id, vp,
"MFInt32AddProperty");
769MFInt32GetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp){
770 JSObject *obj = *hobj.address();
771 jsid
id = *hiid.address();
772 jsval *vp = hvp.address();
774 #ifdef JSVRMLCLASSESVERBOSE
775 printf (
"start of MFInt32GetProperty\n");
778 return _standardMFGetProperty(cx, obj,
id, vp,
779 "_FreeWRL_Internal = 0", FIELDTYPE_MFInt32);
783MFInt32SetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp){
784 JSObject *obj = *hobj.address();
785 jsid
id = *hiid.address();
786 jsval *vp = hvp.address();
788 #ifdef JSVRMLCLASSESVERBOSE
789 printf (
"start of MFInt32SetProperty\n");
792 return doMFSetProperty(cx, obj,
id, vp,FIELDTYPE_MFInt32);
797MFBoolToString(JSContext* cx, uintN argc, jsval* vp) {
798 JSObject* obj = JS_THIS_OBJECT(cx, vp);
799 jsval* argv = JS_ARGV(cx, vp);
804#ifdef JSVRMLCLASSESVERBOSE
805 printf(
"start of MFBoolToString\n");
808 if (!doMFToString(cx, obj,
"MFBool", &rval)) {
return JS_FALSE; }
809 JS_SET_RVAL(cx, vp, rval);
815MFBoolAssign(JSContext* cx, uintN argc, jsval* vp) {
816 JSObject* obj = JS_THIS_OBJECT(cx, vp);
817 jsval* argv = JS_ARGV(cx, vp);
820#ifdef JSVRMLCLASSESVERBOSE
821 printf(
"start of MFBoolAssign\n");
824 SET_MF_ECMA_HAS_CHANGED
826 if (!_standardMFAssign(cx, obj, argc, argv, &rval, &MFBoolClass, FIELDTYPE_SFBool)) {
return JS_FALSE; }
827 JS_SET_RVAL(cx, vp, rval);
834MFBoolConstr(JSContext* cx, uintN argc, jsval* vp) {
835 JSObject* obj = JS_NewObject(cx, &MFBoolClass, NULL, NULL);
836 jsval* argv = JS_ARGV(cx, vp);
837 jsval rval = OBJECT_TO_JSVAL(obj);
838 if (!MFBoolConstrInternals(cx, obj, argc, argv, &rval)) {
return JS_FALSE; }
839 JS_SET_RVAL(cx, vp, rval);
842JSBool MFBoolConstrInternals(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval) {
849#ifdef JSVRMLCLASSESVERBOSE
850 printf(
"start of MFBoolConstr\n");
855 if (argc == 1 && argv) {
858 if (!JS_ValueToObject(cx, argv[0], &_arrayObj)) {
859 printf(
"JS_ValueToObject failed in MFBoolConstr.\n");
863 if (JS_IsArrayObject(cx, _arrayObj)) {
868 JS_GetArrayLength(cx, _arrayObj, &lengthp);
873 if (SM_method() == 2) {
876 if ((any = (AnyNative*)AnyNativeNew(FIELDTYPE_MFBool, NULL, NULL)) == NULL) {
877 printf(
"AnyfNativeNew failed in MFBoolConstr.\n");
880 if (!JS_SetPrivateFw(cx, obj, any)) {
881 printf(
"JS_SetPrivate failed in MFBoolConstr.\n");
885 newsize =
sizeof(int) * upper_power_of_two(argc);
887 anyv->mfbool.p = MALLOC(
int*, newsize);
888 memset(anyv->mfbool.p, 0, newsize);
893 DEFINE_LENGTH(cx, obj, argc)
894 DEFINE_MF_ECMA_HAS_CHANGED
900#ifdef JSVRMLCLASSESVERBOSE
901 printf(
"MFBoolConstr: obj = %p, %u args\n", obj, argc);
905 for (i = 0; i < argc; i++) {
908 JS_GetElement(cx, _arrayObj, i, &vp);
917 printf(
"JS_ValueToInt32 failed in MFBoolConstr.\n");
921#ifdef JSVRMLCLASSESVERBOSE
922 printf(
"value at %d is %d\n", i, _i);
924 if (SM_method() == 2) {
925 anyv->mfbool.p[i] = _i;
926 anyv->mfbool .n = i + 1;
929 if (!JS_DefineElement(cx, obj, (jsint)i, vp, JS_GET_PROPERTY_STUB, JS_SET_PROPERTY_CHECK, JSPROP_ENUMERATE)) {
930 printf(
"JS_DefineElement failed for arg %u in MFBoolConstr.\n", i);
936 *rval = OBJECT_TO_JSVAL(obj);
941MFBoolAddProperty(JSContext* cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp) {
942 JSObject* obj = *hobj.address();
943 jsid
id = *hiid.address();
944 jsval* vp = hvp.address();
946#ifdef JSVRMLCLASSESVERBOSE
947 printf(
"start of MFBoolAddProperty\n");
950 return doMFAddProperty(cx, obj,
id, vp,
"MFBoolAddProperty");
954MFBoolGetProperty(JSContext* cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp) {
955 JSObject* obj = *hobj.address();
956 jsid
id = *hiid.address();
957 jsval* vp = hvp.address();
959#ifdef JSVRMLCLASSESVERBOSE
960 printf(
"start of MFBoolGetProperty\n");
963 return _standardMFGetProperty(cx, obj,
id, vp,
964 "_FreeWRL_Internal = 0", FIELDTYPE_MFBool);
968MFBoolSetProperty(JSContext* cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp) {
969 JSObject* obj = *hobj.address();
970 jsid
id = *hiid.address();
971 jsval* vp = hvp.address();
973#ifdef JSVRMLCLASSESVERBOSE
974 printf(
"start of MFBoolSetProperty\n");
977 return doMFSetProperty(cx, obj,
id, vp, FIELDTYPE_MFBool);
984MFNodeToString(JSContext *cx, uintN argc, jsval *vp) {
985 JSObject *obj = JS_THIS_OBJECT(cx,vp);
986 jsval *argv = JS_ARGV(cx,vp);
992 #ifdef JSVRMLCLASSESVERBOSE
993 printf (
"start of MFNODETOSTRING, obj %p\n",obj);
995 if (!doMFToString(cx, obj,
"MFNode", &rval)) {
return JS_FALSE; }
996 JS_SET_RVAL(cx,vp,rval);
1002MFNodeAssign(JSContext *cx, uintN argc, jsval *vp) {
1003 JSObject *obj = JS_THIS_OBJECT(cx,vp);
1004 jsval *argv = JS_ARGV(cx,vp);
1007 #ifdef JSVRMLCLASSESVERBOSE
1008 printf (
"start of MFNODEASSIGN, obj %p\n",obj);
1011 if (!_standardMFAssign (cx, obj, argc, argv, &rval, &MFNodeClass,FIELDTYPE_SFNode)) {
return JS_FALSE; }
1012 JS_SET_RVAL(cx,vp,rval);
1018MFNodeConstr(JSContext *cx, uintN argc, jsval *vp) {
1019 JSObject *obj = JS_NewObject(cx,&MFNodeClass,NULL,NULL);
1020 jsval *argv = JS_ARGV(cx,vp);
1021 jsval rval = OBJECT_TO_JSVAL(obj);
1022 if (!MFNodeConstrInternals(cx,obj,argc,argv,&rval)) {
return JS_FALSE; }
1023 JS_SET_RVAL(cx,vp,rval);
1026JSBool MFNodeConstrInternals(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
1028 JSObject *_arrayObj;
1036 if(argc == 1 && argv){
1039 if (!JS_ValueToObject(cx, argv[0], &_arrayObj)) {
1040 printf(
"JS_ValueToObject failed in MFVec3fConstr.\n");
1044 if(JS_IsArrayObject(cx, _arrayObj)){
1049 JS_GetArrayLength(cx,_arrayObj, &lengthp);
1054 if(SM_method() == 2){
1057 if((any = (AnyNative*)AnyNativeNew(FIELDTYPE_MFNode,NULL,NULL)) == NULL){
1058 printf(
"AnyfNativeNew failed in MFNodeConstr.\n");
1061 if (!JS_SetPrivateFw(cx, obj, any)) {
1062 printf(
"JS_SetPrivate failed in MFNodeConstr.\n");
1066 newsize =
sizeof(
struct X3D_Node *) * upper_power_of_two(argc);
1068 anyv->mfnode.p = MALLOC(
struct X3D_Node**,newsize);
1069 memset(anyv->mfnode.p,0,newsize);
1073 DEFINE_LENGTH(cx,obj,argc)
1079 #ifdef JSVRMLCLASSESVERBOSE
1080 printf(
"MFNodeConstr: obj = %p, %u args\n", obj, argc);
1083 for (i = 0; i < argc; i++) {
1086 JS_GetElement(cx, _arrayObj, i, &vp);
1092 if ((vp).isObject()) {
1094 if (!JS_ValueToObject(cx, vp, &_obj)) {
1095 printf(
"JS_ValueToObject failed in MFNodeConstr.\n");
1099 CHECK_CLASS(cx,_obj,NULL,__FUNCTION__,SFNodeClass)
1102 if((any2 = (AnyNative *)JS_GetPrivateFw(cx,_obj)) != NULL){
1103 if(any2->type == FIELDTYPE_SFNode){
1104 shallow_copy_field(FIELDTYPE_SFNode,any2->v,(
union anyVrml*)&anyv->mfnode.p[i]);
1105 anyv->mfnode.n = i+1;
1110 if (!JS_DefineElement(cx, obj, (jsint) i, vp, JS_GET_PROPERTY_STUB, JS_SET_PROPERTY_CHECK, JSPROP_ENUMERATE)) {
1111 printf(
"JS_DefineElement failed for arg %d in MFNodeConstr.\n", i);
1119 #ifdef JSVRMLCLASSESVERBOSE
1120 if (JSVAL_IS_NULL(argv[i])) { printf (
"MFNodeConstr - its a NULL\n");}
1121 if (JSVAL_IS_INT(argv[i])) { printf (
"MFNodeConstr - its a INT\n");}
1122 if (JSVAL_IS_STRING(argv[i])) { printf (
"MFNodeConstr - its a STRING\n");}
1126 *rval = OBJECT_TO_JSVAL(obj);
1131MFNodeAddProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp){
1132 JSObject *obj = *hobj.address();
1133 jsid
id = *hiid.address();
1134 jsval *vp = hvp.address();
1136 #ifdef JSVRMLCLASSESVERBOSE
1137 printf (
"startof MFNODEADDPROPERTY\n");
1139 return doMFAddProperty(cx, obj,
id, vp,
"MFNodeAddProperty");
1143MFNodeGetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp){
1144 JSObject *obj = *hobj.address();
1145 jsid
id = *hiid.address();
1146 jsval *vp = hvp.address();
1148 #ifdef JSVRMLCLASSESVERBOSE
1149 printf (
"start of MFNODEGETPROPERTY obj %p\n",obj);
1151 return _standardMFGetProperty(cx, obj,
id, vp,
1152 "_FreeWRL_Internal = 0",
1157MFNodeSetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp){
1158 JSObject *obj = *hobj.address();
1159 jsid
id = *hiid.address();
1160 jsval *vp = hvp.address();
1162 return doMFSetProperty(cx, obj,
id, vp,FIELDTYPE_MFNode);
1168MFTimeAddProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp){
1169 JSObject *obj = *hobj.address();
1170 jsid
id = *hiid.address();
1171 jsval *vp = hvp.address();
1173 return doMFAddProperty(cx, obj,
id, vp,
"MFTimeAddProperty");
1177MFTimeGetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp){
1178 JSObject *obj = *hobj.address();
1179 jsid
id = *hiid.address();
1180 jsval *vp = hvp.address();
1182 return _standardMFGetProperty(cx, obj,
id, vp,
1183 "_FreeWRL_Internal = 0.0",
1188MFTimeSetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp){
1189 JSObject *obj = *hobj.address();
1190 jsid
id = *hiid.address();
1191 jsval *vp = hvp.address();
1193 return doMFSetProperty(cx, obj,
id, vp,FIELDTYPE_MFTime);
1197MFTimeToString(JSContext *cx, uintN argc, jsval *vp) {
1198 JSObject *obj = JS_THIS_OBJECT(cx,vp);
1199 jsval *argv = JS_ARGV(cx,vp);
1204 if (!doMFToString(cx, obj,
"MFTime", &rval)) {
return JS_FALSE; }
1205 JS_SET_RVAL(cx,vp,rval);
1211MFTimeConstr(JSContext *cx, uintN argc, jsval *vp) {
1212 JSObject *obj = JS_NewObject(cx,&MFTimeClass,NULL,NULL);
1213 jsval *argv = JS_ARGV(cx,vp);
1214 jsval rval = OBJECT_TO_JSVAL(obj);
1215 if (!MFTimeConstrInternals(cx,obj,argc,argv,&rval)) {
return JS_FALSE; }
1216 JS_SET_RVAL(cx,vp,rval);
1219JSBool MFTimeConstrInternals(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
1221 JSObject *_arrayObj;
1229 if(argc == 1 && argv){
1232 if (!JS_ValueToObject(cx, argv[0], &_arrayObj)) {
1233 printf(
"JS_ValueToObject failed in MFVec3fConstr.\n");
1237 if(JS_IsArrayObject(cx, _arrayObj)){
1242 JS_GetArrayLength(cx,_arrayObj, &lengthp);
1247 if(SM_method() == 2){
1250 if((any = (AnyNative*)AnyNativeNew(FIELDTYPE_MFTime,NULL,NULL)) == NULL){
1251 printf(
"AnyfNativeNew failed in MFTimeConstr.\n");
1254 if (!JS_SetPrivateFw(cx, obj, any)) {
1255 printf(
"JS_SetPrivate failed in MFTimeConstr.\n");
1259 newsize =
sizeof(double) * upper_power_of_two(argc);
1261 anyv->mftime.p = MALLOC(
double*,newsize);
1262 memset(anyv->mftime.p,0,newsize);
1266 DEFINE_LENGTH(cx,obj,argc)
1267 DEFINE_MF_ECMA_HAS_CHANGED
1273 #ifdef JSVRMLCLASSESVERBOSE
1274 printf(
"MFTimeConstr: obj = %p, %u args\n", obj, argc);
1276 for (i = 0; i < argc; i++) {
1279 JS_GetElement(cx, _arrayObj, i, &vp);
1284 if (!JS_ValueToNumber(cx, vp, &_d)) {
1286 "JS_ValueToNumber failed in MFTimeConstr.\n");
1290 anyv->mftime.p[i] = _d;
1291 anyv->mftime.n = i+1;
1293 if (!JS_DefineElement(cx, obj, (jsint) i, vp, JS_GET_PROPERTY_STUB, JS_SET_PROPERTY_CHECK, JSPROP_ENUMERATE)) {
1294 printf(
"JS_DefineElement failed for arg %u in MFTimeConstr.\n", i);
1299 *rval = OBJECT_TO_JSVAL(obj);
1304MFTimeAssign(JSContext *cx, uintN argc, jsval *vp) {
1305 JSObject *obj = JS_THIS_OBJECT(cx,vp);
1306 jsval *argv = JS_ARGV(cx,vp);
1309 SET_MF_ECMA_HAS_CHANGED
1311 if (!_standardMFAssign (cx, obj, argc, argv, &rval, &MFTimeClass,FIELDTYPE_SFTime)) {
return JS_FALSE; }
1312 JS_SET_RVAL(cx,vp,rval);
1320MFDoubleAddProperty(JSContext* cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp) {
1321 JSObject* obj = *hobj.address();
1322 jsid
id = *hiid.address();
1323 jsval* vp = hvp.address();
1325 return doMFAddProperty(cx, obj,
id, vp,
"MFDoubleAddProperty");
1329MFDoubleGetProperty(JSContext* cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp) {
1330 JSObject* obj = *hobj.address();
1331 jsid
id = *hiid.address();
1332 jsval* vp = hvp.address();
1334 return _standardMFGetProperty(cx, obj,
id, vp,
1335 "_FreeWRL_Internal = 0.0",
1336 FIELDTYPE_MFDouble);
1340MFDoubleSetProperty(JSContext* cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp) {
1341 JSObject* obj = *hobj.address();
1342 jsid
id = *hiid.address();
1343 jsval* vp = hvp.address();
1345 return doMFSetProperty(cx, obj,
id, vp, FIELDTYPE_MFDouble);
1349MFDoubleToString(JSContext* cx, uintN argc, jsval* vp) {
1350 JSObject* obj = JS_THIS_OBJECT(cx, vp);
1351 jsval* argv = JS_ARGV(cx, vp);
1356 if (!doMFToString(cx, obj,
"MFDouble", &rval)) {
return JS_FALSE; }
1357 JS_SET_RVAL(cx, vp, rval);
1363MFDoubleConstr(JSContext* cx, uintN argc, jsval* vp) {
1364 JSObject* obj = JS_NewObject(cx, &MFDoubleClass, NULL, NULL);
1365 jsval* argv = JS_ARGV(cx, vp);
1366 jsval rval = OBJECT_TO_JSVAL(obj);
1367 if (!MFDoubleConstrInternals(cx, obj, argc, argv, &rval)) {
return JS_FALSE; }
1368 JS_SET_RVAL(cx, vp, rval);
1371JSBool MFDoubleConstrInternals(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval) {
1373 JSObject* _arrayObj;
1381 if (argc == 1 && argv) {
1384 if (!JS_ValueToObject(cx, argv[0], &_arrayObj)) {
1385 printf(
"JS_ValueToObject failed in MFVec3fConstr.\n");
1389 if (JS_IsArrayObject(cx, _arrayObj)) {
1394 JS_GetArrayLength(cx, _arrayObj, &lengthp);
1399 if (SM_method() == 2) {
1402 if ((any = (AnyNative*)AnyNativeNew(FIELDTYPE_MFDouble, NULL, NULL)) == NULL) {
1403 printf(
"AnyfNativeNew failed in MFTimeConstr.\n");
1406 if (!JS_SetPrivateFw(cx, obj, any)) {
1407 printf(
"JS_SetPrivate failed in MFDoubleConstr.\n");
1411 newsize =
sizeof(double) * upper_power_of_two(argc);
1413 anyv->mfdouble.p = MALLOC(
double*, newsize);
1414 memset(anyv->mfdouble.p, 0, newsize);
1419 DEFINE_LENGTH(cx, obj, argc)
1420 DEFINE_MF_ECMA_HAS_CHANGED
1426#ifdef JSVRMLCLASSESVERBOSE
1427 printf(
"MFDoubleConstr: obj = %p, %u args\n", obj, argc);
1429 for (i = 0; i < argc; i++) {
1432 JS_GetElement(cx, _arrayObj, i, &vp);
1438 if (!JS_ValueToNumber(cx, vp, &_d)) {
1440 "JS_ValueToNumber failed in MFDoubleConstr.\n");
1443 if (SM_method() == 2) {
1444 anyv->mfdouble.p[i] = _d;
1445 anyv->mfdouble.n = i + 1;
1448 if (!JS_DefineElement(cx, obj, (jsint)i, vp, JS_GET_PROPERTY_STUB, JS_SET_PROPERTY_CHECK, JSPROP_ENUMERATE)) {
1449 printf(
"JS_DefineElement failed for arg %u in MFTimeConstr.\n", i);
1454 *rval = OBJECT_TO_JSVAL(obj);
1459MFDoubleAssign(JSContext* cx, uintN argc, jsval* vp) {
1460 JSObject* obj = JS_THIS_OBJECT(cx, vp);
1461 jsval* argv = JS_ARGV(cx, vp);
1464 SET_MF_ECMA_HAS_CHANGED
1466 if (!_standardMFAssign(cx, obj, argc, argv, &rval, &MFDoubleClass, FIELDTYPE_SFDouble)) {
return JS_FALSE; }
1467 JS_SET_RVAL(cx, vp, rval);
1475MFVec2fAddProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp){
1476 JSObject *obj = *hobj.address();
1477 jsid
id = *hiid.address();
1478 jsval *vp = hvp.address();
1480 return doMFAddProperty(cx, obj,
id, vp,
"MFVec2fAddProperty");
1484MFVec2fGetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp){
1485 JSObject *obj = *hobj.address();
1486 jsid
id = *hiid.address();
1487 jsval *vp = hvp.address();
1489 return _standardMFGetProperty(cx, obj,
id, vp,
1490 "_FreeWRL_Internal = new SFVec2f()",FIELDTYPE_MFVec2f);
1494MFVec2fSetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp){
1495 JSObject *obj = *hobj.address();
1496 jsid
id = *hiid.address();
1497 jsval *vp = hvp.address();
1499 return doMFSetProperty(cx, obj,
id, vp,FIELDTYPE_MFVec2f);
1503MFVec2fToString(JSContext *cx, uintN argc, jsval *vp) {
1504 JSObject *obj = JS_THIS_OBJECT(cx,vp);
1505 jsval *argv = JS_ARGV(cx,vp);
1510 if (!doMFToString(cx, obj,
"MFVec2f", &rval)) {
return JS_FALSE; }
1511 JS_SET_RVAL(cx,vp,rval);
1517MFVec2fConstr(JSContext *cx, uintN argc, jsval *vp) {
1518 JSObject *obj = JS_NewObject(cx,&MFVec2fClass,NULL,NULL);
1519 jsval *argv = JS_ARGV(cx,vp);
1520 jsval rval = OBJECT_TO_JSVAL(obj);
1521 if (!MFVec2fConstrInternals(cx,obj,argc,argv,&rval)) {
return JS_FALSE; }
1522 JS_SET_RVAL(cx,vp,rval);
1525JSBool MFVec2fConstrInternals(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
1527 JSObject *_arrayObj;
1535 if(argc == 1 && argv){
1538 if (!JS_ValueToObject(cx, argv[0], &_arrayObj)) {
1539 printf(
"JS_ValueToObject failed in MFVec3fConstr.\n");
1543 if(JS_IsArrayObject(cx, _arrayObj)){
1548 JS_GetArrayLength(cx,_arrayObj, &lengthp);
1553 if(SM_method() == 2){
1556 if((any = (AnyNative*)AnyNativeNew(FIELDTYPE_MFVec2f,NULL,NULL)) == NULL){
1557 printf(
"AnyfNativeNew failed in MFVec2fConstr.\n");
1560 if (!JS_SetPrivateFw(cx, obj, any)) {
1561 printf(
"JS_SetPrivate failed in MFVec2fConstr.\n");
1565 newsize =
sizeof(
struct SFVec2f)*upper_power_of_two(argc);
1567 anyv->mfvec2f.p = MALLOC(
struct SFVec2f*,newsize);
1568 memset(anyv->mfvec2f.p,0,newsize);
1572 DEFINE_LENGTH(cx,obj,argc)
1579 #ifdef JSVRMLCLASSESVERBOSE
1580 printf(
"MFVec2fConstr: obj = %p, %u args\n", obj, argc);
1583 for (i = 0; i < argc; i++) {
1586 JS_GetElement(cx, _arrayObj, i, &vp);
1591 if (!JS_ValueToObject(cx, vp, &_obj)) {
1592 printf(
"JS_ValueToObject failed in MFVec2fConstr.\n");
1596 CHECK_CLASS(cx,_obj,NULL,__FUNCTION__,SFVec2fClass)
1599 if((any2 = (AnyNative *)JS_GetPrivateFw(cx,_obj)) != NULL){
1602 if(any2->type == FIELDTYPE_SFVec2f || any2->type == FIELDTYPE_SFColor || any2->type == FIELDTYPE_SFVec3f || any2->type == FIELDTYPE_SFColorRGBA){
1603 shallow_copy_field(FIELDTYPE_SFVec2f,any2->v,(
union anyVrml*)&anyv->mfvec2f.p[i]);
1604 anyv->mfvec2f.n = i+1;
1609 if (!JS_DefineElement(cx, obj, (jsint) i, vp, JS_GET_PROPERTY_STUB, JS_SET_PROPERTY_CHECK, JSPROP_ENUMERATE)) {
1610 printf(
"JS_DefineElement failed for arg %d in MFVec2fConstr.\n", i);
1615 *rval = OBJECT_TO_JSVAL(obj);
1620MFVec2fAssign(JSContext *cx, uintN argc, jsval *vp) {
1621 JSObject *obj = JS_THIS_OBJECT(cx,vp);
1622 jsval *argv = JS_ARGV(cx,vp);
1624 if (!_standardMFAssign (cx, obj, argc, argv, &rval, &MFVec2fClass,FIELDTYPE_SFVec2f)) {
return JS_FALSE; }
1625 JS_SET_RVAL(cx,vp,rval);
1632MFVec3fAddProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp){
1633 JSObject *obj = *hobj.address();
1634 jsid
id = *hiid.address();
1635 jsval *vp = hvp.address();
1636 return doMFAddProperty(cx, obj,
id, vp,
"MFVec3fAddProperty");
1640MFVec3fGetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp){
1641 JSObject *obj = *hobj.address();
1642 jsid
id = *hiid.address();
1643 jsval *vp = hvp.address();
1645 return _standardMFGetProperty(cx, obj,
id, vp,
1646 "_FreeWRL_Internal = new SFVec3f()",FIELDTYPE_MFVec3f);
1650MFVec3fSetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp){
1651 JSObject *obj = *hobj.address();
1652 jsid
id = *hiid.address();
1653 jsval *vp = hvp.address();
1655 return doMFSetProperty(cx, obj,
id, vp,FIELDTYPE_MFVec3f);
1659MFVec3fToString(JSContext *cx, uintN argc, jsval *vp) {
1660 JSObject *obj = JS_THIS_OBJECT(cx,vp);
1661 jsval *argv = JS_ARGV(cx,vp);
1667 if (!doMFToString(cx, obj,
"MFVec3f", &rval)) {
return JS_FALSE; }
1668 JS_SET_RVAL(cx,vp,rval);
1674MFVec3fConstr(JSContext *cx, uintN argc, jsval *vp) {
1675 JSObject *obj = JS_NewObject(cx,&MFVec3fClass,NULL,NULL);
1676 jsval *argv = JS_ARGV(cx,vp);
1677 jsval rval = OBJECT_TO_JSVAL(obj);
1678 if (!MFVec3fConstrInternals(cx,obj,argc,argv,&rval)) {
return JS_FALSE; }
1679 JS_SET_RVAL(cx,vp,rval);
1682JSBool MFVec3fConstrInternals(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
1684 JSObject *_arrayObj;
1693 if(argc == 1 && argv){
1696 if (!JS_ValueToObject(cx, argv[0], &_arrayObj)) {
1697 printf(
"JS_ValueToObject failed in MFVec3fConstr.\n");
1701 if(JS_IsArrayObject(cx, _arrayObj)){
1706 JS_GetArrayLength(cx,_arrayObj, &lengthp);
1713 if(SM_method() == 2){
1716 if((any = (AnyNative*)AnyNativeNew(FIELDTYPE_MFVec3f,NULL,NULL)) == NULL){
1717 printf(
"AnyfNativeNew failed in MFVec3fConstr.\n");
1720 if (!JS_SetPrivateFw(cx, obj, any)) {
1721 printf(
"JS_SetPrivate failed in MFVec3fConstr.\n");
1725 newsize =
sizeof(
struct SFVec3f)*upper_power_of_two(argc);
1727 anyv->mfvec3f.p = MALLOC(
struct SFVec3f*,newsize);
1728 memset(anyv->mfvec3f.p,0,newsize);
1732 DEFINE_LENGTH(cx,obj,argc)
1738 #ifdef JSVRMLCLASSESVERBOSE
1739 printf(
"MFVec3fConstr: obj = %p, %u args\n", obj, argc);
1741 for (i = 0; i < argc; i++) {
1744 JS_GetElement(cx, _arrayObj, i, &vp);
1749 if (!JS_ValueToObject(cx, vp, &_obj)) {
1750 printf(
"JS_ValueToObject failed in MFVec3fConstr.\n");
1754 CHECK_CLASS(cx,_obj,NULL,__FUNCTION__,SFVec3fClass)
1758 if((any2 = (AnyNative *)JS_GetPrivateFw(cx,_obj)) != NULL){
1761 if(any2->type == FIELDTYPE_SFVec3f || any2->type == FIELDTYPE_SFColor || any2->type == FIELDTYPE_SFColorRGBA){
1762 shallow_copy_field(FIELDTYPE_SFVec3f,any2->v,(
union anyVrml*)&anyv->mfvec3f.p[i]);
1763 anyv->mfvec3f.n = i+1;
1769 if (!JS_DefineElement(cx, obj, (jsint) i, vp, JS_GET_PROPERTY_STUB, JS_SET_PROPERTY_CHECK, JSPROP_ENUMERATE)) {
1770 printf(
"JS_DefineElement failed for arg %d in MFVec3fConstr.\n", i);
1775 *rval = OBJECT_TO_JSVAL(obj);
1780MFVec3fAssign(JSContext *cx, uintN argc, jsval *vp) {
1781 JSObject *obj = JS_THIS_OBJECT(cx,vp);
1782 jsval *argv = JS_ARGV(cx,vp);
1784 if (!_standardMFAssign (cx, obj, argc, argv, &rval, &MFVec3fClass,FIELDTYPE_SFVec3f)) {
return JS_FALSE; }
1785 JS_SET_RVAL(cx,vp,rval);
1792MFVec4fAddProperty(JSContext* cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp) {
1793 JSObject* obj = *hobj.address();
1794 jsid
id = *hiid.address();
1795 jsval* vp = hvp.address();
1796 return doMFAddProperty(cx, obj,
id, vp,
"MFVec4fAddProperty");
1800MFVec4fGetProperty(JSContext* cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp) {
1801 JSObject* obj = *hobj.address();
1802 jsid
id = *hiid.address();
1803 jsval* vp = hvp.address();
1805 return _standardMFGetProperty(cx, obj,
id, vp,
1806 "_FreeWRL_Internal = new SFVec4f()", FIELDTYPE_MFVec4f);
1810MFVec4fSetProperty(JSContext* cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp) {
1811 JSObject* obj = *hobj.address();
1812 jsid
id = *hiid.address();
1813 jsval* vp = hvp.address();
1815 return doMFSetProperty(cx, obj,
id, vp, FIELDTYPE_MFVec4f);
1819MFVec4fToString(JSContext* cx, uintN argc, jsval* vp) {
1820 JSObject* obj = JS_THIS_OBJECT(cx, vp);
1821 jsval* argv = JS_ARGV(cx, vp);
1827 if (!doMFToString(cx, obj,
"MFVec4f", &rval)) {
return JS_FALSE; }
1828 JS_SET_RVAL(cx, vp, rval);
1834MFVec4fConstr(JSContext* cx, uintN argc, jsval* vp) {
1835 JSObject* obj = JS_NewObject(cx, &MFVec4fClass, NULL, NULL);
1836 jsval* argv = JS_ARGV(cx, vp);
1837 jsval rval = OBJECT_TO_JSVAL(obj);
1838 if (!MFVec4fConstrInternals(cx, obj, argc, argv, &rval)) {
return JS_FALSE; }
1839 JS_SET_RVAL(cx, vp, rval);
1842JSBool MFVec4fConstrInternals(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval) {
1844 JSObject* _arrayObj;
1853 if (argc == 1 && argv) {
1856 if (!JS_ValueToObject(cx, argv[0], &_arrayObj)) {
1857 printf(
"JS_ValueToObject failed in MFVec4fConstr.\n");
1861 if (JS_IsArrayObject(cx, _arrayObj)) {
1866 JS_GetArrayLength(cx, _arrayObj, &lengthp);
1873 if (SM_method() == 2) {
1876 if ((any = (AnyNative*)AnyNativeNew(FIELDTYPE_MFVec4f, NULL, NULL)) == NULL) {
1877 printf(
"AnyfNativeNew failed in MFVec4fConstr.\n");
1880 if (!JS_SetPrivateFw(cx, obj, any)) {
1881 printf(
"JS_SetPrivate failed in MFVec4fConstr.\n");
1885 newsize =
sizeof(
struct SFVec4f) * upper_power_of_two(argc);
1887 anyv->mfvec4f.p = MALLOC(
struct SFVec4f*, newsize);
1888 memset(anyv->mfvec4f.p, 0, newsize);
1893 DEFINE_LENGTH(cx, obj, argc)
1899#ifdef JSVRMLCLASSESVERBOSE
1900 printf(
"MFVec4fConstr: obj = %p, %u args\n", obj, argc);
1902 for (i = 0; i < argc; i++) {
1905 JS_GetElement(cx, _arrayObj, i, &vp);
1911 if (!JS_ValueToObject(cx, vp, &_obj)) {
1912 printf(
"JS_ValueToObject failed in MFVec4fConstr.\n");
1916 CHECK_CLASS(cx, _obj, NULL, __FUNCTION__, SFVec4fClass)
1918 if (SM_method() == 2) {
1920 if ((any2 = (AnyNative*)JS_GetPrivateFw(cx, _obj)) != NULL) {
1923 if (any2->type == FIELDTYPE_SFVec4f || any2->type == FIELDTYPE_SFColorRGBA) {
1924 shallow_copy_field(FIELDTYPE_SFVec4f, any2->v, (
union anyVrml*)&anyv->mfvec4f.p[i]);
1925 anyv->mfvec4f.n = i + 1;
1932 if (!JS_DefineElement(cx, obj, (jsint)i, vp, JS_GET_PROPERTY_STUB, JS_SET_PROPERTY_CHECK, JSPROP_ENUMERATE)) {
1933 printf(
"JS_DefineElement failed for arg %d in MFVec4fConstr.\n", i);
1938 *rval = OBJECT_TO_JSVAL(obj);
1943MFVec4fAssign(JSContext* cx, uintN argc, jsval* vp) {
1944 JSObject* obj = JS_THIS_OBJECT(cx, vp);
1945 jsval* argv = JS_ARGV(cx, vp);
1947 if (!_standardMFAssign(cx, obj, argc, argv, &rval, &MFVec4fClass, FIELDTYPE_SFVec4f)) {
return JS_FALSE; }
1948 JS_SET_RVAL(cx, vp, rval);
1956MFVec2dAddProperty(JSContext* cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp) {
1957 JSObject* obj = *hobj.address();
1958 jsid
id = *hiid.address();
1959 jsval* vp = hvp.address();
1960 return doMFAddProperty(cx, obj,
id, vp,
"MFVec2dAddProperty");
1964MFVec2dGetProperty(JSContext* cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp) {
1965 JSObject* obj = *hobj.address();
1966 jsid
id = *hiid.address();
1967 jsval* vp = hvp.address();
1969 return _standardMFGetProperty(cx, obj,
id, vp,
1970 "_FreeWRL_Internal = new SFVec2d()", FIELDTYPE_MFVec2d);
1974MFVec2dSetProperty(JSContext* cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp) {
1975 JSObject* obj = *hobj.address();
1976 jsid
id = *hiid.address();
1977 jsval* vp = hvp.address();
1979 return doMFSetProperty(cx, obj,
id, vp, FIELDTYPE_MFVec2d);
1983MFVec2dToString(JSContext* cx, uintN argc, jsval* vp) {
1984 JSObject* obj = JS_THIS_OBJECT(cx, vp);
1985 jsval* argv = JS_ARGV(cx, vp);
1991 if (!doMFToString(cx, obj,
"MFVec2d", &rval)) {
return JS_FALSE; }
1992 JS_SET_RVAL(cx, vp, rval);
1998MFVec2dConstr(JSContext* cx, uintN argc, jsval* vp) {
1999 JSObject* obj = JS_NewObject(cx, &MFVec2dClass, NULL, NULL);
2000 jsval* argv = JS_ARGV(cx, vp);
2001 jsval rval = OBJECT_TO_JSVAL(obj);
2002 if (!MFVec2dConstrInternals(cx, obj, argc, argv, &rval)) {
return JS_FALSE; }
2003 JS_SET_RVAL(cx, vp, rval);
2006JSBool MFVec2dConstrInternals(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval) {
2008 JSObject* _arrayObj;
2017 if (argc == 1 && argv) {
2020 if (!JS_ValueToObject(cx, argv[0], &_arrayObj)) {
2021 printf(
"JS_ValueToObject failed in MFVec2dConstr.\n");
2025 if (JS_IsArrayObject(cx, _arrayObj)) {
2030 JS_GetArrayLength(cx, _arrayObj, &lengthp);
2037 if (SM_method() == 2) {
2040 if ((any = (AnyNative*)AnyNativeNew(FIELDTYPE_MFVec2d, NULL, NULL)) == NULL) {
2041 printf(
"AnyfNativeNew failed in MFVec2dConstr.\n");
2044 if (!JS_SetPrivateFw(cx, obj, any)) {
2045 printf(
"JS_SetPrivate failed in MFVec2dConstr.\n");
2049 newsize =
sizeof(
struct SFVec2d) * upper_power_of_two(argc);
2051 anyv->mfvec2d.p = MALLOC(
struct SFVec2d*, newsize);
2052 memset(anyv->mfvec2d.p, 0, newsize);
2057 DEFINE_LENGTH(cx, obj, argc)
2063#ifdef JSVRMLCLASSESVERBOSE
2064 printf(
"MFVec2dConstr: obj = %p, %u args\n", obj, argc);
2066 for (i = 0; i < argc; i++) {
2069 JS_GetElement(cx, _arrayObj, i, &vp);
2075 if (!JS_ValueToObject(cx, vp, &_obj)) {
2076 printf(
"JS_ValueToObject failed in MFVec2dConstr.\n");
2080 CHECK_CLASS(cx, _obj, NULL, __FUNCTION__, SFVec2dClass)
2082 if (SM_method() == 2) {
2084 if ((any2 = (AnyNative*)JS_GetPrivateFw(cx, _obj)) != NULL) {
2087 if (any2->type == FIELDTYPE_SFVec2d || any2->type == FIELDTYPE_SFVec3d || any2->type == FIELDTYPE_SFVec4d) {
2088 shallow_copy_field(FIELDTYPE_SFVec2d, any2->v, (
union anyVrml*)&anyv->mfvec2d.p[i]);
2089 anyv->mfvec2d.n = i + 1;
2096 if (!JS_DefineElement(cx, obj, (jsint)i, vp, JS_GET_PROPERTY_STUB, JS_SET_PROPERTY_CHECK, JSPROP_ENUMERATE)) {
2097 printf(
"JS_DefineElement failed for arg %d in MFVec2dConstr.\n", i);
2102 *rval = OBJECT_TO_JSVAL(obj);
2107MFVec2dAssign(JSContext* cx, uintN argc, jsval* vp) {
2108 JSObject* obj = JS_THIS_OBJECT(cx, vp);
2109 jsval* argv = JS_ARGV(cx, vp);
2111 if (!_standardMFAssign(cx, obj, argc, argv, &rval, &MFVec2dClass, FIELDTYPE_SFVec2d)) {
return JS_FALSE; }
2112 JS_SET_RVAL(cx, vp, rval);
2119MFVec3dAddProperty(JSContext* cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp) {
2120 JSObject* obj = *hobj.address();
2121 jsid
id = *hiid.address();
2122 jsval* vp = hvp.address();
2123 return doMFAddProperty(cx, obj,
id, vp,
"MFVec3dAddProperty");
2127MFVec3dGetProperty(JSContext* cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp) {
2128 JSObject* obj = *hobj.address();
2129 jsid
id = *hiid.address();
2130 jsval* vp = hvp.address();
2132 return _standardMFGetProperty(cx, obj,
id, vp,
2133 "_FreeWRL_Internal = new SFVec3d()", FIELDTYPE_MFVec3d);
2137MFVec3dSetProperty(JSContext* cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp) {
2138 JSObject* obj = *hobj.address();
2139 jsid
id = *hiid.address();
2140 jsval* vp = hvp.address();
2142 return doMFSetProperty(cx, obj,
id, vp, FIELDTYPE_MFVec3d);
2146MFVec3dToString(JSContext* cx, uintN argc, jsval* vp) {
2147 JSObject* obj = JS_THIS_OBJECT(cx, vp);
2148 jsval* argv = JS_ARGV(cx, vp);
2154 if (!doMFToString(cx, obj,
"MFVec3d", &rval)) {
return JS_FALSE; }
2155 JS_SET_RVAL(cx, vp, rval);
2161MFVec3dConstr(JSContext* cx, uintN argc, jsval* vp) {
2162 JSObject* obj = JS_NewObject(cx, &MFVec3dClass, NULL, NULL);
2163 jsval* argv = JS_ARGV(cx, vp);
2164 jsval rval = OBJECT_TO_JSVAL(obj);
2165 if (!MFVec3dConstrInternals(cx, obj, argc, argv, &rval)) {
return JS_FALSE; }
2166 JS_SET_RVAL(cx, vp, rval);
2169JSBool MFVec3dConstrInternals(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval) {
2171 JSObject* _arrayObj;
2180 if (argc == 1 && argv) {
2183 if (!JS_ValueToObject(cx, argv[0], &_arrayObj)) {
2184 printf(
"JS_ValueToObject failed in MFVec3dConstr.\n");
2188 if (JS_IsArrayObject(cx, _arrayObj)) {
2193 JS_GetArrayLength(cx, _arrayObj, &lengthp);
2200 if (SM_method() == 2) {
2203 if ((any = (AnyNative*)AnyNativeNew(FIELDTYPE_MFVec3d, NULL, NULL)) == NULL) {
2204 printf(
"AnyfNativeNew failed in MFVec3dConstr.\n");
2207 if (!JS_SetPrivateFw(cx, obj, any)) {
2208 printf(
"JS_SetPrivate failed in MFVec3dConstr.\n");
2212 newsize =
sizeof(
struct SFVec3d) * upper_power_of_two(argc);
2214 anyv->mfvec3d.p = MALLOC(
struct SFVec3d*, newsize);
2215 memset(anyv->mfvec3d.p, 0, newsize);
2220 DEFINE_LENGTH(cx, obj, argc)
2226#ifdef JSVRMLCLASSESVERBOSE
2227 printf(
"MFVec3dConstr: obj = %p, %u args\n", obj, argc);
2229 for (i = 0; i < argc; i++) {
2232 JS_GetElement(cx, _arrayObj, i, &vp);
2238 if (!JS_ValueToObject(cx, vp, &_obj)) {
2239 printf(
"JS_ValueToObject failed in MFVec3dConstr.\n");
2243 CHECK_CLASS(cx, _obj, NULL, __FUNCTION__, SFVec3dClass)
2245 if (SM_method() == 2) {
2247 if ((any2 = (AnyNative*)JS_GetPrivateFw(cx, _obj)) != NULL) {
2250 if (any2->type == FIELDTYPE_SFVec3d || any2->type == FIELDTYPE_SFVec4d) {
2251 shallow_copy_field(FIELDTYPE_SFVec3d, any2->v, (
union anyVrml*)&anyv->mfvec3d.p[i]);
2252 anyv->mfvec3d.n = i + 1;
2259 if (!JS_DefineElement(cx, obj, (jsint)i, vp, JS_GET_PROPERTY_STUB, JS_SET_PROPERTY_CHECK, JSPROP_ENUMERATE)) {
2260 printf(
"JS_DefineElement failed for arg %d in MFVec3dConstr.\n", i);
2265 *rval = OBJECT_TO_JSVAL(obj);
2270MFVec3dAssign(JSContext* cx, uintN argc, jsval* vp) {
2271 JSObject* obj = JS_THIS_OBJECT(cx, vp);
2272 jsval* argv = JS_ARGV(cx, vp);
2274 if (!_standardMFAssign(cx, obj, argc, argv, &rval, &MFVec3dClass, FIELDTYPE_SFVec3d)) {
return JS_FALSE; }
2275 JS_SET_RVAL(cx, vp, rval);
2283MFVec4dAddProperty(JSContext* cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp) {
2284 JSObject* obj = *hobj.address();
2285 jsid
id = *hiid.address();
2286 jsval* vp = hvp.address();
2287 return doMFAddProperty(cx, obj,
id, vp,
"MFVec4dAddProperty");
2291MFVec4dGetProperty(JSContext* cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp) {
2292 JSObject* obj = *hobj.address();
2293 jsid
id = *hiid.address();
2294 jsval* vp = hvp.address();
2296 return _standardMFGetProperty(cx, obj,
id, vp,
2297 "_FreeWRL_Internal = new SFVec4d()", FIELDTYPE_MFVec4d);
2301MFVec4dSetProperty(JSContext* cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp) {
2302 JSObject* obj = *hobj.address();
2303 jsid
id = *hiid.address();
2304 jsval* vp = hvp.address();
2306 return doMFSetProperty(cx, obj,
id, vp, FIELDTYPE_MFVec4d);
2310MFVec4dToString(JSContext* cx, uintN argc, jsval* vp) {
2311 JSObject* obj = JS_THIS_OBJECT(cx, vp);
2312 jsval* argv = JS_ARGV(cx, vp);
2318 if (!doMFToString(cx, obj,
"MFVec4d", &rval)) {
return JS_FALSE; }
2319 JS_SET_RVAL(cx, vp, rval);
2325MFVec4dConstr(JSContext* cx, uintN argc, jsval* vp) {
2326 JSObject* obj = JS_NewObject(cx, &MFVec4dClass, NULL, NULL);
2327 jsval* argv = JS_ARGV(cx, vp);
2328 jsval rval = OBJECT_TO_JSVAL(obj);
2329 if (!MFVec4dConstrInternals(cx, obj, argc, argv, &rval)) {
return JS_FALSE; }
2330 JS_SET_RVAL(cx, vp, rval);
2333JSBool MFVec4dConstrInternals(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval) {
2335 JSObject* _arrayObj;
2344 if (argc == 1 && argv) {
2347 if (!JS_ValueToObject(cx, argv[0], &_arrayObj)) {
2348 printf(
"JS_ValueToObject failed in MFVec4dConstr.\n");
2352 if (JS_IsArrayObject(cx, _arrayObj)) {
2357 JS_GetArrayLength(cx, _arrayObj, &lengthp);
2364 if (SM_method() == 2) {
2367 if ((any = (AnyNative*)AnyNativeNew(FIELDTYPE_MFVec4d, NULL, NULL)) == NULL) {
2368 printf(
"AnyfNativeNew failed in MFVec4dConstr.\n");
2371 if (!JS_SetPrivateFw(cx, obj, any)) {
2372 printf(
"JS_SetPrivate failed in MFVec4dConstr.\n");
2376 newsize =
sizeof(
struct SFVec4d) * upper_power_of_two(argc);
2378 anyv->mfvec4d.p = MALLOC(
struct SFVec4d*, newsize);
2379 memset(anyv->mfvec4d.p, 0, newsize);
2384 DEFINE_LENGTH(cx, obj, argc)
2390#ifdef JSVRMLCLASSESVERBOSE
2391 printf(
"MFVec4dConstr: obj = %p, %u args\n", obj, argc);
2393 for (i = 0; i < argc; i++) {
2396 JS_GetElement(cx, _arrayObj, i, &vp);
2402 if (!JS_ValueToObject(cx, vp, &_obj)) {
2403 printf(
"JS_ValueToObject failed in MFVec4dConstr.\n");
2407 CHECK_CLASS(cx, _obj, NULL, __FUNCTION__, SFVec4dClass)
2409 if (SM_method() == 2) {
2411 if ((any2 = (AnyNative*)JS_GetPrivateFw(cx, _obj)) != NULL) {
2414 if (any2->type == FIELDTYPE_SFVec4d ) {
2415 shallow_copy_field(FIELDTYPE_SFVec4d, any2->v, (
union anyVrml*)&anyv->mfvec4d.p[i]);
2416 anyv->mfvec4d.n = i + 1;
2423 if (!JS_DefineElement(cx, obj, (jsint)i, vp, JS_GET_PROPERTY_STUB, JS_SET_PROPERTY_CHECK, JSPROP_ENUMERATE)) {
2424 printf(
"JS_DefineElement failed for arg %d in MFVec4dConstr.\n", i);
2429 *rval = OBJECT_TO_JSVAL(obj);
2434MFVec4dAssign(JSContext* cx, uintN argc, jsval* vp) {
2435 JSObject* obj = JS_THIS_OBJECT(cx, vp);
2436 jsval* argv = JS_ARGV(cx, vp);
2438 if (!_standardMFAssign(cx, obj, argc, argv, &rval, &MFVec4dClass, FIELDTYPE_SFVec4d)) {
return JS_FALSE; }
2439 JS_SET_RVAL(cx, vp, rval);
2447MFImageAddProperty(JSContext* cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp) {
2448 JSObject* obj = *hobj.address();
2449 jsid
id = *hiid.address();
2450 jsval* vp = hvp.address();
2451 return doMFAddProperty(cx, obj,
id, vp,
"MFImageAddProperty");
2455MFImageGetProperty(JSContext* cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp) {
2456 JSObject* obj = *hobj.address();
2457 jsid
id = *hiid.address();
2458 jsval* vp = hvp.address();
2460 return _standardMFGetProperty(cx, obj,
id, vp,
2461 "_FreeWRL_Internal = new SFImage()", FIELDTYPE_MFImage);
2465MFImageSetProperty(JSContext* cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp) {
2466 JSObject* obj = *hobj.address();
2467 jsid
id = *hiid.address();
2468 jsval* vp = hvp.address();
2470 return doMFSetProperty(cx, obj,
id, vp, FIELDTYPE_MFImage);
2474MFImageToString(JSContext* cx, uintN argc, jsval* vp) {
2475 JSObject* obj = JS_THIS_OBJECT(cx, vp);
2476 jsval* argv = JS_ARGV(cx, vp);
2482 if (!doMFToString(cx, obj,
"MFImage", &rval)) {
return JS_FALSE; }
2483 JS_SET_RVAL(cx, vp, rval);
2489MFImageConstr(JSContext* cx, uintN argc, jsval* vp) {
2490 JSObject* obj = JS_NewObject(cx, &MFImageClass, NULL, NULL);
2491 jsval* argv = JS_ARGV(cx, vp);
2492 jsval rval = OBJECT_TO_JSVAL(obj);
2493 if (!MFImageConstrInternals(cx, obj, argc, argv, &rval)) {
return JS_FALSE; }
2494 JS_SET_RVAL(cx, vp, rval);
2497JSBool MFImageConstrInternals(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval) {
2499 JSObject* _arrayObj;
2508 if (argc == 1 && argv) {
2511 if (!JS_ValueToObject(cx, argv[0], &_arrayObj)) {
2512 printf(
"JS_ValueToObject failed in MFImageConstr.\n");
2516 if (JS_IsArrayObject(cx, _arrayObj)) {
2521 JS_GetArrayLength(cx, _arrayObj, &lengthp);
2528 if (SM_method() == 2) {
2531 if ((any = (AnyNative*)AnyNativeNew(FIELDTYPE_MFImage, NULL, NULL)) == NULL) {
2532 printf(
"AnyfNativeNew failed in MFImageConstr.\n");
2535 if (!JS_SetPrivateFw(cx, obj, any)) {
2536 printf(
"JS_SetPrivate failed in MFImageConstr.\n");
2540 newsize =
sizeof(
struct SFImage) * upper_power_of_two(argc);
2542 anyv->mfimage.p = MALLOC(
struct SFImage*, newsize);
2543 memset(anyv->mfimage.p, 0, newsize);
2548 DEFINE_LENGTH(cx, obj, argc)
2554#ifdef JSVRMLCLASSESVERBOSE
2555 printf(
"MFImageConstr: obj = %p, %u args\n", obj, argc);
2557 for (i = 0; i < argc; i++) {
2560 JS_GetElement(cx, _arrayObj, i, &vp);
2566 if (!JS_ValueToObject(cx, vp, &_obj)) {
2567 printf(
"JS_ValueToObject failed in MFImageConstr.\n");
2571 CHECK_CLASS(cx, _obj, NULL, __FUNCTION__, SFImageClass)
2573 if (SM_method() == 2) {
2575 if ((any2 = (AnyNative*)JS_GetPrivateFw(cx, _obj)) != NULL) {
2578 if (any2->type == FIELDTYPE_SFImage) {
2579 shallow_copy_field(FIELDTYPE_SFImage, any2->v, (
union anyVrml*)&anyv->mfimage.p[i]);
2580 anyv->mfimage.n = i + 1;
2587 if (!JS_DefineElement(cx, obj, (jsint)i, vp, JS_GET_PROPERTY_STUB, JS_SET_PROPERTY_CHECK, JSPROP_ENUMERATE)) {
2588 printf(
"JS_DefineElement failed for arg %d in MFImageConstr.\n", i);
2593 *rval = OBJECT_TO_JSVAL(obj);
2598MFImageAssign(JSContext* cx, uintN argc, jsval* vp) {
2599 JSObject* obj = JS_THIS_OBJECT(cx, vp);
2600 jsval* argv = JS_ARGV(cx, vp);
2602 if (!_standardMFAssign(cx, obj, argc, argv, &rval, &MFImageClass, FIELDTYPE_SFImage)) {
return JS_FALSE; }
2603 JS_SET_RVAL(cx, vp, rval);
2685VrmlMatrixToString(JSContext *cx, uintN argc, jsval *vp) {
2686 return X3DMatrix4ToString(cx, argc, vp);
2689VrmlMatrixgetTransform(JSContext *cx, uintN argc, jsval *vp) {
2690 return X3DMatrix4getTransform(cx, argc, vp);
2693VrmlMatrixsetTransform(JSContext *cx, uintN argc, jsval *vp) {
2694 return X3DMatrix4setTransform(cx, argc, vp);
2697VrmlMatrixinverse(JSContext *cx, uintN argc, jsval *vp) {
2698 return X3DMatrix4inverse(cx, argc, vp);
2701VrmlMatrixtranspose(JSContext *cx, uintN argc, jsval *vp) {
2702 return X3DMatrix4transpose(cx, argc, vp);
2705VrmlMatrixmultLeft(JSContext *cx, uintN argc, jsval *vp) {
2706 return X3DMatrix4multLeft(cx, argc, vp);
2709VrmlMatrixmultRight(JSContext *cx, uintN argc, jsval *vp) {
2710 return X3DMatrix4multRight(cx, argc, vp);
2713VrmlMatrixmultVecMatrix(JSContext *cx, uintN argc, jsval *vp) {
2714 return X3DMatrix4multVecMatrix(cx, argc, vp);
2717VrmlMatrixmultMatrixVec(JSContext *cx, uintN argc, jsval *vp) {
2718 return X3DMatrix4multMatrixVec(cx, argc, vp);
2721VrmlMatrixAssign(JSContext *cx, uintN argc, jsval *vp) {
2722 return X3DMatrix4Assign(cx, argc, vp);
2726VrmlMatrixConstr(JSContext *cx, uintN argc, jsval *vp) {
2727 return X3DMatrix4Constr(cx, argc, vp);
2730VrmlMatrixAddProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp){
2731 return X3DMatrix4AddProperty(cx, hobj, hiid, hvp);
2734VrmlMatrixGetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp){
2735 return X3DMatrix4GetProperty(cx, hobj, hiid, hvp);
2738VrmlMatrixSetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp){
2739 return X3DMatrix4SetProperty(cx, hobj, hiid, strict, hvp);
2744MFRotationAddProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp){
2745 JSObject *obj = *hobj.address();
2746 jsid
id = *hiid.address();
2747 jsval *vp = hvp.address();
2749 return doMFAddProperty(cx, obj,
id, vp,
"MFRotationAddProperty");
2753MFRotationGetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp){
2754 JSObject *obj = *hobj.address();
2755 jsid
id = *hiid.address();
2756 jsval *vp = hvp.address();
2758 return _standardMFGetProperty(cx, obj,
id, vp,
2759 "_FreeWRL_Internal = new SFRotation()",FIELDTYPE_MFRotation);
2763MFRotationSetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp){
2764 JSObject *obj = *hobj.address();
2765 jsid
id = *hiid.address();
2766 jsval *vp = hvp.address();
2768 return doMFSetProperty(cx, obj,
id, vp,FIELDTYPE_MFRotation);
2772MFRotationToString(JSContext *cx, uintN argc, jsval *vp) {
2773 JSObject *obj = JS_THIS_OBJECT(cx,vp);
2774 jsval *argv = JS_ARGV(cx,vp);
2779 if (!doMFToString(cx, obj,
"MFRotation", &rval)) {
return JS_FALSE; }
2780 JS_SET_RVAL(cx,vp,rval);
2786MFRotationConstr(JSContext *cx, uintN argc, jsval *vp) {
2787 JSObject *obj = JS_NewObject(cx,&MFRotationClass,NULL,NULL);
2788 jsval *argv = JS_ARGV(cx,vp);
2789 jsval rval = OBJECT_TO_JSVAL(obj);
2790 if (!MFRotationConstrInternals(cx,obj,argc,argv,&rval)) {
return JS_FALSE; }
2791 JS_SET_RVAL(cx,vp,rval);
2794JSBool MFRotationConstrInternals(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
2796 JSObject *_arrayObj;
2805 if(argc == 1 && argv){
2808 if (!JS_ValueToObject(cx, argv[0], &_arrayObj)) {
2809 printf(
"JS_ValueToObject failed in MFVec3fConstr.\n");
2813 if(JS_IsArrayObject(cx, _arrayObj)){
2818 JS_GetArrayLength(cx,_arrayObj, &lengthp);
2823 if(SM_method() == 2){
2826 if((any = (AnyNative*)AnyNativeNew(FIELDTYPE_MFRotation,NULL,NULL)) == NULL){
2827 printf(
"AnyfNativeNew failed in MFRotationConstr.\n");
2830 if (!JS_SetPrivateFw(cx, obj, any)) {
2831 printf(
"JS_SetPrivate failed in MFRotationConstr.\n");
2835 newsize =
sizeof(
struct SFRotation)*upper_power_of_two(argc);
2837 anyv->mfrotation.p = MALLOC(
struct SFRotation*,newsize);
2838 memset(anyv->mfrotation.p,0,newsize);
2842 DEFINE_LENGTH(cx,obj,argc)
2849 #ifdef JSVRMLCLASSESVERBOSE
2850 printf(
"MFRotationConstr: obj = %p, %u args\n", obj, argc);
2852 for (i = 0; i < argc; i++) {
2855 JS_GetElement(cx, _arrayObj, i, &vp);
2860 if (!JS_ValueToObject(cx, vp, &_obj)) {
2862 "JS_ValueToObject failed in MFRotationConstr.\n");
2866 CHECK_CLASS(cx,_obj,NULL,__FUNCTION__,SFRotationClass)
2869 if((any2 = (AnyNative *)JS_GetPrivateFw(cx,_obj)) != NULL){
2870 if(any2->type == FIELDTYPE_SFRotation ){
2871 shallow_copy_field(FIELDTYPE_SFRotation,any2->v,(
union anyVrml*)&anyv->mfrotation.p[i]);
2872 anyv->mfrotation.n = i+1;
2877 if (!JS_DefineElement(cx, obj, (jsint) i, vp, JS_GET_PROPERTY_STUB, JS_SET_PROPERTY_CHECK, JSPROP_ENUMERATE)) {
2878 printf(
"JS_DefineElement failed for arg %d in MFRotationConstr.\n", i);
2883 *rval = OBJECT_TO_JSVAL(obj);
2888MFRotationAssign(JSContext *cx, uintN argc, jsval *vp) {
2889 JSObject *obj = JS_THIS_OBJECT(cx,vp);
2890 jsval *argv = JS_ARGV(cx,vp);
2893 if (!_standardMFAssign (cx, obj, argc, argv, &rval, &MFRotationClass,FIELDTYPE_SFRotation)) {
return JS_FALSE; }
2894 JS_SET_RVAL(cx,vp,rval);
2901MFStringAddProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp){
2902 JSObject *obj = *hobj.address();
2903 jsid iid = *hiid.address();
2904 jsval *vp = hvp.address();
2906 if (!JS_IdToValue(cx,iid,&
id)) {
2907 printf(
"JS_IdToValue failed in MFStringAddProperty\n");
2912 #ifdef JSVRMLCLASSESVERBOSE
2913 printf(
"MFStringAddProperty: vp = %p\n", obj);
2914 if (JSVAL_IS_STRING(*vp)==TRUE) {
2915 printf(
" is a common string :%s:\n",
2917 JS_GetStringBytes(JS_ValueToString(cx, *vp)));
2919 JS_EncodeString(cx,JS_ValueToString(cx, *vp)));
2922 if (JSVAL_IS_OBJECT(*vp)==TRUE) {
2923 printf (
" parameter is an object\n");
2925 if (JSVAL_IS_PRIMITIVE(*vp)==TRUE) {
2926 printf (
" parameter is a primitive\n");
2928 if (JSVAL_IS_NULL(*vp)) { printf (
" - its a NULL\n");}
2929 if (JSVAL_IS_INT(*vp)) { printf (
" - its a INT %d\n",JSVAL_TO_INT(*vp));}
2931 printf(
"MFStringAddProperty: id = %p\n", obj);
2932 if (JSVAL_IS_STRING(
id)==TRUE) {
2933 printf(
" is a common string :%s:\n",
2935 JS_GetStringBytes(JS_ValueToString(cx,
id)));
2937 JS_EncodeString(cx,JS_ValueToString(cx,
id)));
2940 if (JSVAL_IS_OBJECT(
id)==TRUE) {
2941 printf (
" parameter is an object\n");
2943 if (JSVAL_IS_PRIMITIVE(
id)==TRUE) {
2944 printf (
" parameter is a primitive\n");
2946 if (JSVAL_IS_NULL(
id)) { printf (
" - its a NULL\n");}
2947 if (JSVAL_IS_INT(
id)) { printf (
" - its a INT %d\n",JSVAL_TO_INT(
id));}
2953 if (JSVAL_IS_STRING(*vp)) {
2954 if (!doMFStringUnquote(cx, vp)) {
2956 "doMFStringUnquote failed in MFStringAddProperty.\n");
2960 return doMFAddProperty(cx, obj, iid, vp,
"MFStringAddProperty");
2966MFStringGetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp){
2967 JSObject *obj = *hobj.address();
2968 jsid iid = *hiid.address();
2969 jsval *vp = hvp.address();
2973 int32 _length, _index;
2977 if (!JS_IdToValue(cx,iid,&
id)) {
2978 printf(
"JS_IdToValue failed in MFStringGetProperty\n");
2983 return _standardMFGetProperty(cx, obj, iid, vp,
2984 "_FreeWRL_Internal = new SFString()",FIELDTYPE_MFString);
2988 #ifdef JSVRMLCLASSESVERBOSE
2989 printf(
"MFStringGetProperty: obj = %p\n", obj);
2992 if (!JS_GetProperty(cx, obj, MF_LENGTH_FIELD, &_length_val)) {
2993 printf(
"JS_GetProperty failed for \"%s\" in MFStringGetProperty.\n", MF_LENGTH_FIELD);
2996 _length = JSVAL_TO_INT(_length_val);
2998 if (JSVAL_IS_INT(
id)) {
2999 _index = JSVAL_TO_INT(
id);
3001 if (_index >= _length) {
3002 _str = JS_NewStringCopyZ(cx,
"");
3003 *vp = STRING_TO_JSVAL(_str);
3004 if (!JS_DefineElement(cx, obj, (jsint) _index, *vp, JS_GET_PROPERTY_STUB, JS_SET_PROPERTY_CHECK, JSPROP_ENUMERATE)) {
3005 printf(
"JS_DefineElement failed in MFStringGetProperty.\n");
3009 if (!JS_LookupElement(cx, obj, _index, vp)) {
3010 printf(
"JS_LookupElement failed in MFStringGetProperty.\n");
3013 if (JSVAL_IS_NULL(*vp)) {
3016 _str = JS_NewStringCopyZ(cx,
"NULL");
3017 *vp = STRING_TO_JSVAL(_str);
3018 if (!JS_DefineElement(cx, obj, (jsint) _index, *vp, JS_GET_PROPERTY_STUB, JS_SET_PROPERTY_CHECK, JSPROP_ENUMERATE)) {
3019 printf(
"JS_DefineElement failed in MFStringGetProperty.\n");
3030MFStringSetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp){
3031 JSObject *obj = *hobj.address();
3032 jsid
id = *hiid.address();
3033 jsval *vp = hvp.address();
3037 #ifdef JSVRMLCLASSESVERBOSE
3038 printf(
"MFStringSetProperty: obj = %p id %d jsval %u\n", obj,
id, (
unsigned int)*vp);
3040printf (
"MFStringSetProperty, setting vp of type...\n");
3041 if (JSVAL_IS_OBJECT(*vp)) { printf (
" - MFStringSetProperty, vp is a OBJECT\n");}
3042 if (JSVAL_IS_PRIMITIVE(*vp)) { printf (
" - MFStringSetProperty, vp is a PRIMITIVE\n");}
3043 if (JSVAL_IS_NULL(*vp)) { printf (
" - MFStringSetProperty, vp is a NULL\n");}
3044 if (JSVAL_IS_STRING(*vp)) { printf (
" - MFStringSetProperty, vp is a STRING\n");}
3045 if (JSVAL_IS_INT(*vp)) { printf (
" - MFStringSetProperty, vp is a INT %d\n",JSVAL_TO_INT(*vp));}
3051 if (JSVAL_IS_STRING(*vp)) {
3052 if (!doMFStringUnquote(cx, vp)) {
3054 "doMFStringUnquote failed in MFStringSetProperty.\n");
3058 rv = doMFSetProperty(cx, obj,
id, vp,FIELDTYPE_MFString);
3059 #ifdef JSVRMLCLASSESVERBOSE
3060 printf (
"returning from MFStringSetProperty\n");
3068MFStringToString(JSContext *cx, uintN argc, jsval *vp) {
3069 JSObject *obj = JS_THIS_OBJECT(cx,vp);
3070 jsval *argv = JS_ARGV(cx,vp);
3075 #ifdef JSVRMLCLASSESVERBOSE
3076 printf(
"MFStringToString: obj = %p, %u args\n", obj, argc);
3080 if (!doMFToString(cx, obj,
"MFString", &rval)) {
return JS_FALSE; }
3081 JS_SET_RVAL(cx,vp,rval);
3088MFStringConstr(JSContext *cx, uintN argc, jsval *vp) {
3089 JSObject *obj = JS_NewObject(cx,&MFStringClass,NULL,NULL);
3090 jsval *argv = JS_ARGV(cx,vp);
3091 jsval rval = OBJECT_TO_JSVAL(obj);
3092 if (!MFStringConstrInternals(cx,obj,argc,argv,&rval)) {
return JS_FALSE; }
3093 JS_SET_RVAL(cx,vp,rval);
3096JSBool MFStringConstrInternals(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
3098 JSObject *_arrayObj;
3104 #ifdef JSVRMLCLASSESVERBOSE
3106 printf(
"MFStringConstr: cx %p, obj %p args %d rval %p parent %p... ", cx, obj, argc, rval, JS_GetParent(cx, obj));
3112 if(argc == 1 && argv){
3115 if (!JS_ValueToObject(cx, argv[0], &_arrayObj)) {
3116 printf(
"JS_ValueToObject failed in MFVec3fConstr.\n");
3120 if(JS_IsArrayObject(cx, _arrayObj)){
3125 JS_GetArrayLength(cx,_arrayObj, &lengthp);
3130 if(SM_method() == 2){
3133 if((any = (AnyNative*)AnyNativeNew(FIELDTYPE_MFString,NULL,NULL)) == NULL){
3134 printf(
"AnyfNativeNew failed in MFStringConstr.\n");
3137 if (!JS_SetPrivateFw(cx, obj, any)) {
3138 printf(
"JS_SetPrivate failed in MFStringConstr.\n");
3142 newsize =
sizeof(
struct Uni_String*)*upper_power_of_two(argc);
3144 anyv->mfstring.p = MALLOC(
struct Uni_String**,newsize);
3145 memset(anyv->mfstring.p,0,newsize);
3149 DEFINE_LENGTH(cx,obj,argc)
3150 DEFINE_MF_ECMA_HAS_CHANGED
3157 for (i = 0; i < argc; i++) {
3160 JS_GetElement(cx, _arrayObj, i, &vp);
3165 #ifdef JSVRMLCLASSESVERBOSE
3166 printf (
"argv %d is a ...",i);
3168 if (JSVAL_IS_STRING(argv[i])==TRUE) {
3169 printf (
" Common String, is");
3170 _str = JS_ValueToString(cx, argv[i]);
3172 printf (
" %s",JS_GetStringBytes(_str));
3174 printf (
" %s",JS_EncodeString(cx,_str));
3179 if (JSVAL_IS_OBJECT(argv[i])==TRUE) {
3180 printf (
" is an object");
3182 if (JSVAL_IS_PRIMITIVE(argv[i])==TRUE) {
3183 printf (
" is a primitive");
3186 if ((_str = JS_ValueToString(cx, argv[i])) == NULL) {
3187 printf(
"JS_ValueToString failed in MFStringConstr.");
3194 char *cstring = NULL;
3195 if (JSVAL_IS_STRING(vp)==TRUE) {
3199 _str = JS_ValueToString(cx, vp);
3200 cstring = JS_EncodeString(cx,_str);
3210 us->strptr = cstring;
3211 us->len = strlen(cstring);
3213 anyv->mfstring.p[i] = us;
3214 anyv->mfstring.n = i+1;
3218 if (!JS_DefineElement(cx, obj, (jsint) i, vp, JS_GET_PROPERTY_STUB, JS_SET_PROPERTY_CHECK, JSPROP_ENUMERATE)) {
3219 printf(
"JS_DefineElement failed for arg %d in MFStringConstr.\n", i);
3224 *rval = OBJECT_TO_JSVAL(obj);
3226 #ifdef JSVRMLCLASSESVERBOSE
3227 printf (
"finished MFStringConstr\n");
3234MFStringAssign(JSContext *cx, uintN argc, jsval *vp) {
3235 JSObject *obj = JS_THIS_OBJECT(cx,vp);
3236 jsval *argv = JS_ARGV(cx,vp);
3240 #ifdef JSVRMLCLASSESVERBOSE
3241 printf(
"MFStringAssign: obj = %p args %d... ", obj, argc);
3243 if(SM_method() != 2){
3244 SET_MF_ECMA_HAS_CHANGED
3247 if (!_standardMFAssign (cx, obj, argc, argv, &rval, &MFStringClass,FIELDTYPE_SFString)) {
return JS_FALSE; }
3248 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
3254JSBool MFStringDeleteProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool *succeeded){
3255 JSObject *obj = *hobj.address();
3256 jsid iid = *hiid.address();
3258 #ifdef JSVRMLCLASSESVERBOSE
3259 printf (
"MFStringDeleteProperty\n");
3264MFStringEnumerateProperty(JSContext *cx, JS::Handle<JSObject*> hobj) {
3265 JSObject *obj = *hobj.address();
3267 #ifdef JSVRMLCLASSESVERBOSE
3268 printf (
"MFStringEnumerateProperty\n");
3273JSBool MFStringResolveProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid){
3274 JSObject *obj = *hobj.address();
3275 jsid
id = *hiid.address();
3277 #ifdef JSVRMLCLASSESVERBOSE
3278 printf (
"MFStringResolveProperty\n");
3282JSBool MFStringConvertProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JSType type, JS::MutableHandle<JS::Value> hvp) {
3283 JSObject *obj = *hobj.address();
3284 jsval *vp = hvp.address();
3287 #ifdef JSVRMLCLASSESVERBOSE
3288 printf (
"MFStringConvertProperty\n");
3296MFMatrix3fAddProperty(JSContext* cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp) {
3297 JSObject* obj = *hobj.address();
3298 jsid
id = *hiid.address();
3299 jsval* vp = hvp.address();
3300 return doMFAddProperty(cx, obj,
id, vp,
"MFMatrix3fAddProperty");
3304MFMatrix3fGetProperty(JSContext* cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp) {
3305 JSObject* obj = *hobj.address();
3306 jsid
id = *hiid.address();
3307 jsval* vp = hvp.address();
3309 return _standardMFGetProperty(cx, obj,
id, vp,
3310 "_FreeWRL_Internal = new SFMatrix3f()", FIELDTYPE_MFMatrix3f);
3314MFMatrix3fSetProperty(JSContext* cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp) {
3315 JSObject* obj = *hobj.address();
3316 jsid
id = *hiid.address();
3317 jsval* vp = hvp.address();
3319 return doMFSetProperty(cx, obj,
id, vp, FIELDTYPE_MFMatrix3f);
3323MFMatrix3fToString(JSContext* cx, uintN argc, jsval* vp) {
3324 JSObject* obj = JS_THIS_OBJECT(cx, vp);
3325 jsval* argv = JS_ARGV(cx, vp);
3331 if (!doMFToString(cx, obj,
"MFMatrix3f", &rval)) {
return JS_FALSE; }
3332 JS_SET_RVAL(cx, vp, rval);
3338MFMatrix3fConstr(JSContext* cx, uintN argc, jsval* vp) {
3339 JSObject* obj = JS_NewObject(cx, &MFMatrix3fClass, NULL, NULL);
3340 jsval* argv = JS_ARGV(cx, vp);
3341 jsval rval = OBJECT_TO_JSVAL(obj);
3342 if (!MFMatrix3fConstrInternals(cx, obj, argc, argv, &rval)) {
return JS_FALSE; }
3343 JS_SET_RVAL(cx, vp, rval);
3346JSBool MFMatrix3fConstrInternals(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval) {
3348 JSObject* _arrayObj;
3357 if (argc == 1 && argv) {
3360 if (!JS_ValueToObject(cx, argv[0], &_arrayObj)) {
3361 printf(
"JS_ValueToObject failed in MFMatrix3fConstr.\n");
3365 if (JS_IsArrayObject(cx, _arrayObj)) {
3370 JS_GetArrayLength(cx, _arrayObj, &lengthp);
3377 if (SM_method() == 2) {
3380 if ((any = (AnyNative*)AnyNativeNew(FIELDTYPE_MFMatrix3f, NULL, NULL)) == NULL) {
3381 printf(
"AnyfNativeNew failed in MFMatrix3fConstr.\n");
3384 if (!JS_SetPrivateFw(cx, obj, any)) {
3385 printf(
"JS_SetPrivate failed in MFMatrix3fConstr.\n");
3389 newsize =
sizeof(
struct SFMatrix3f) * upper_power_of_two(argc);
3391 anyv->mfmatrix3f.p = MALLOC(
struct SFMatrix3f*, newsize);
3392 memset(anyv->mfmatrix3f.p, 0, newsize);
3397 DEFINE_LENGTH(cx, obj, argc)
3403#ifdef JSVRMLCLASSESVERBOSE
3404 printf(
"MFVec4dConstr: obj = %p, %u args\n", obj, argc);
3406 for (i = 0; i < argc; i++) {
3409 JS_GetElement(cx, _arrayObj, i, &vp);
3415 if (!JS_ValueToObject(cx, vp, &_obj)) {
3416 printf(
"JS_ValueToObject failed in MFMatrix3fConstr.\n");
3422 if (SM_method() == 2) {
3424 if ((any2 = (AnyNative*)JS_GetPrivateFw(cx, _obj)) != NULL) {
3427 if (any2->type == FIELDTYPE_SFMatrix3f) {
3428 shallow_copy_field(FIELDTYPE_SFMatrix3f, any2->v, (
union anyVrml*)&anyv->mfmatrix3f.p[i]);
3429 anyv->mfmatrix3f.n = i + 1;
3432 shallow_copy_field_precision(any2->type, FIELDTYPE_SFMatrix3f, any2->v, (
union anyVrml*)&anyv->mfmatrix3f.p[i]);
3433 anyv->mfmatrix3f.n = i + 1;
3439 *rval = OBJECT_TO_JSVAL(obj);
3444MFMatrix3fAssign(JSContext* cx, uintN argc, jsval* vp) {
3445 JSObject* obj = JS_THIS_OBJECT(cx, vp);
3446 jsval* argv = JS_ARGV(cx, vp);
3448 if (!_standardMFAssign(cx, obj, argc, argv, &rval, &MFMatrix3fClass, FIELDTYPE_SFMatrix3f)) {
return JS_FALSE; }
3449 JS_SET_RVAL(cx, vp, rval);
3457MFMatrix4fAddProperty(JSContext* cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp) {
3458 JSObject* obj = *hobj.address();
3459 jsid
id = *hiid.address();
3460 jsval* vp = hvp.address();
3461 return doMFAddProperty(cx, obj,
id, vp,
"MFMatrix4fAddProperty");
3465MFMatrix4fGetProperty(JSContext* cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp) {
3466 JSObject* obj = *hobj.address();
3467 jsid
id = *hiid.address();
3468 jsval* vp = hvp.address();
3470 return _standardMFGetProperty(cx, obj,
id, vp,
3471 "_FreeWRL_Internal = new SFMatrix4f()", FIELDTYPE_MFMatrix4f);
3475MFMatrix4fSetProperty(JSContext* cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp) {
3476 JSObject* obj = *hobj.address();
3477 jsid
id = *hiid.address();
3478 jsval* vp = hvp.address();
3480 return doMFSetProperty(cx, obj,
id, vp, FIELDTYPE_MFMatrix4f);
3484MFMatrix4fToString(JSContext* cx, uintN argc, jsval* vp) {
3485 JSObject* obj = JS_THIS_OBJECT(cx, vp);
3486 jsval* argv = JS_ARGV(cx, vp);
3492 if (!doMFToString(cx, obj,
"MFMatrix4f", &rval)) {
return JS_FALSE; }
3493 JS_SET_RVAL(cx, vp, rval);
3499MFMatrix4fConstr(JSContext* cx, uintN argc, jsval* vp) {
3500 JSObject* obj = JS_NewObject(cx, &MFMatrix4fClass, NULL, NULL);
3501 jsval* argv = JS_ARGV(cx, vp);
3502 jsval rval = OBJECT_TO_JSVAL(obj);
3503 if (!MFMatrix4fConstrInternals(cx, obj, argc, argv, &rval)) {
return JS_FALSE; }
3504 JS_SET_RVAL(cx, vp, rval);
3507JSBool MFMatrix4fConstrInternals(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval) {
3509 JSObject* _arrayObj;
3518 if (argc == 1 && argv) {
3521 if (!JS_ValueToObject(cx, argv[0], &_arrayObj)) {
3522 printf(
"JS_ValueToObject failed in MFMatrix4fConstr.\n");
3526 if (JS_IsArrayObject(cx, _arrayObj)) {
3531 JS_GetArrayLength(cx, _arrayObj, &lengthp);
3538 if (SM_method() == 2) {
3541 if ((any = (AnyNative*)AnyNativeNew(FIELDTYPE_MFMatrix4f, NULL, NULL)) == NULL) {
3542 printf(
"AnyfNativeNew failed in MFMatrix4fConstr.\n");
3545 if (!JS_SetPrivateFw(cx, obj, any)) {
3546 printf(
"JS_SetPrivate failed in MFMatrix4fConstr.\n");
3550 newsize =
sizeof(
struct SFMatrix4f) * upper_power_of_two(argc);
3552 anyv->mfmatrix4f.p = MALLOC(
struct SFMatrix4f*, newsize);
3553 memset(anyv->mfmatrix4f.p, 0, newsize);
3558 DEFINE_LENGTH(cx, obj, argc)
3564#ifdef JSVRMLCLASSESVERBOSE
3565 printf(
"MFVec4dConstr: obj = %p, %u args\n", obj, argc);
3567 for (i = 0; i < argc; i++) {
3570 JS_GetElement(cx, _arrayObj, i, &vp);
3576 if (!JS_ValueToObject(cx, vp, &_obj)) {
3577 printf(
"JS_ValueToObject failed in MFMatrix4fConstr.\n");
3583 if (SM_method() == 2) {
3585 if ((any2 = (AnyNative*)JS_GetPrivateFw(cx, _obj)) != NULL) {
3588 if (any2->type == FIELDTYPE_SFMatrix4f) {
3589 shallow_copy_field(FIELDTYPE_SFMatrix4f, any2->v, (
union anyVrml*)&anyv->mfmatrix4f.p[i]);
3590 anyv->mfmatrix4f.n = i + 1;
3593 shallow_copy_field_precision(any2->type, FIELDTYPE_SFMatrix4f, any2->v, (
union anyVrml*)&anyv->mfmatrix4f.p[i]);
3594 anyv->mfmatrix4f.n = i + 1;
3600 *rval = OBJECT_TO_JSVAL(obj);
3605MFMatrix4fAssign(JSContext* cx, uintN argc, jsval* vp) {
3606 JSObject* obj = JS_THIS_OBJECT(cx, vp);
3607 jsval* argv = JS_ARGV(cx, vp);
3609 if (!_standardMFAssign(cx, obj, argc, argv, &rval, &MFMatrix4fClass, FIELDTYPE_SFMatrix4f)) {
return JS_FALSE; }
3610 JS_SET_RVAL(cx, vp, rval);
3617MFMatrix3dAddProperty(JSContext* cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp) {
3618 JSObject* obj = *hobj.address();
3619 jsid
id = *hiid.address();
3620 jsval* vp = hvp.address();
3621 return doMFAddProperty(cx, obj,
id, vp,
"MFMatrix3dAddProperty");
3625MFMatrix3dGetProperty(JSContext* cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp) {
3626 JSObject* obj = *hobj.address();
3627 jsid
id = *hiid.address();
3628 jsval* vp = hvp.address();
3630 return _standardMFGetProperty(cx, obj,
id, vp,
3631 "_FreeWRL_Internal = new SFMatrix3d()", FIELDTYPE_MFMatrix3d);
3635MFMatrix3dSetProperty(JSContext* cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp) {
3636 JSObject* obj = *hobj.address();
3637 jsid
id = *hiid.address();
3638 jsval* vp = hvp.address();
3640 return doMFSetProperty(cx, obj,
id, vp, FIELDTYPE_MFMatrix3d);
3644MFMatrix3dToString(JSContext* cx, uintN argc, jsval* vp) {
3645 JSObject* obj = JS_THIS_OBJECT(cx, vp);
3646 jsval* argv = JS_ARGV(cx, vp);
3652 if (!doMFToString(cx, obj,
"MFMatrix3d", &rval)) {
return JS_FALSE; }
3653 JS_SET_RVAL(cx, vp, rval);
3659MFMatrix3dConstr(JSContext* cx, uintN argc, jsval* vp) {
3660 JSObject* obj = JS_NewObject(cx, &MFMatrix3dClass, NULL, NULL);
3661 jsval* argv = JS_ARGV(cx, vp);
3662 jsval rval = OBJECT_TO_JSVAL(obj);
3663 if (!MFMatrix3dConstrInternals(cx, obj, argc, argv, &rval)) {
return JS_FALSE; }
3664 JS_SET_RVAL(cx, vp, rval);
3667JSBool MFMatrix3dConstrInternals(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval) {
3669 JSObject* _arrayObj;
3678 if (argc == 1 && argv) {
3681 if (!JS_ValueToObject(cx, argv[0], &_arrayObj)) {
3682 printf(
"JS_ValueToObject failed in MFMatrix3dConstr.\n");
3686 if (JS_IsArrayObject(cx, _arrayObj)) {
3691 JS_GetArrayLength(cx, _arrayObj, &lengthp);
3698 if (SM_method() == 2) {
3701 if ((any = (AnyNative*)AnyNativeNew(FIELDTYPE_MFMatrix3d, NULL, NULL)) == NULL) {
3702 printf(
"AnyfNativeNew failed in MFMatrix3dConstr.\n");
3705 if (!JS_SetPrivateFw(cx, obj, any)) {
3706 printf(
"JS_SetPrivate failed in MFMatrix3dConstr.\n");
3710 newsize =
sizeof(
struct SFMatrix3d) * upper_power_of_two(argc);
3712 anyv->mfmatrix3d.p = MALLOC(
struct SFMatrix3d*, newsize);
3713 memset(anyv->mfmatrix3d.p, 0, newsize);
3718 DEFINE_LENGTH(cx, obj, argc)
3724#ifdef JSVRMLCLASSESVERBOSE
3725 printf(
"MFVec4dConstr: obj = %p, %u args\n", obj, argc);
3727 for (i = 0; i < argc; i++) {
3730 JS_GetElement(cx, _arrayObj, i, &vp);
3736 if (!JS_ValueToObject(cx, vp, &_obj)) {
3737 printf(
"JS_ValueToObject failed in MFMatrix3dConstr.\n");
3743 if (SM_method() == 2) {
3745 if ((any2 = (AnyNative*)JS_GetPrivateFw(cx, _obj)) != NULL) {
3748 if (any2->type == FIELDTYPE_SFMatrix3d) {
3749 shallow_copy_field(FIELDTYPE_SFMatrix3d, any2->v, (
union anyVrml*)&anyv->mfmatrix3d.p[i]);
3750 anyv->mfmatrix3d.n = i + 1;
3753 shallow_copy_field_precision(any2->type, FIELDTYPE_SFMatrix3d, any2->v, (
union anyVrml*)&anyv->mfmatrix3d.p[i]);
3754 anyv->mfmatrix3d.n = i + 1;
3760 *rval = OBJECT_TO_JSVAL(obj);
3765MFMatrix3dAssign(JSContext* cx, uintN argc, jsval* vp) {
3766 JSObject* obj = JS_THIS_OBJECT(cx, vp);
3767 jsval* argv = JS_ARGV(cx, vp);
3769 if (!_standardMFAssign(cx, obj, argc, argv, &rval, &MFMatrix3dClass, FIELDTYPE_SFMatrix3d)) {
return JS_FALSE; }
3770 JS_SET_RVAL(cx, vp, rval);
3778MFMatrix4dAddProperty(JSContext* cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp) {
3779 JSObject* obj = *hobj.address();
3780 jsid
id = *hiid.address();
3781 jsval* vp = hvp.address();
3782 return doMFAddProperty(cx, obj,
id, vp,
"MFMatrix4dAddProperty");
3786MFMatrix4dGetProperty(JSContext* cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp) {
3787 JSObject* obj = *hobj.address();
3788 jsid
id = *hiid.address();
3789 jsval* vp = hvp.address();
3791 return _standardMFGetProperty(cx, obj,
id, vp,
3792 "_FreeWRL_Internal = new SFMatrix4d()", FIELDTYPE_MFMatrix4d);
3796MFMatrix4dSetProperty(JSContext* cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp) {
3797 JSObject* obj = *hobj.address();
3798 jsid
id = *hiid.address();
3799 jsval* vp = hvp.address();
3801 return doMFSetProperty(cx, obj,
id, vp, FIELDTYPE_MFMatrix4d);
3805MFMatrix4dToString(JSContext* cx, uintN argc, jsval* vp) {
3806 JSObject* obj = JS_THIS_OBJECT(cx, vp);
3807 jsval* argv = JS_ARGV(cx, vp);
3813 if (!doMFToString(cx, obj,
"MFMatrix4d", &rval)) {
return JS_FALSE; }
3814 JS_SET_RVAL(cx, vp, rval);
3820MFMatrix4dConstr(JSContext* cx, uintN argc, jsval* vp) {
3821 JSObject* obj = JS_NewObject(cx, &MFMatrix4dClass, NULL, NULL);
3822 jsval* argv = JS_ARGV(cx, vp);
3823 jsval rval = OBJECT_TO_JSVAL(obj);
3824 if (!MFMatrix4dConstrInternals(cx, obj, argc, argv, &rval)) {
return JS_FALSE; }
3825 JS_SET_RVAL(cx, vp, rval);
3828JSBool MFMatrix4dConstrInternals(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval) {
3830 JSObject* _arrayObj;
3839 if (argc == 1 && argv) {
3842 if (!JS_ValueToObject(cx, argv[0], &_arrayObj)) {
3843 printf(
"JS_ValueToObject failed in MFMatrix4dConstr.\n");
3847 if (JS_IsArrayObject(cx, _arrayObj)) {
3852 JS_GetArrayLength(cx, _arrayObj, &lengthp);
3859 if (SM_method() == 2) {
3862 if ((any = (AnyNative*)AnyNativeNew(FIELDTYPE_MFMatrix4d, NULL, NULL)) == NULL) {
3863 printf(
"AnyfNativeNew failed in MFMatrix4dConstr.\n");
3866 if (!JS_SetPrivateFw(cx, obj, any)) {
3867 printf(
"JS_SetPrivate failed in MFMatrix4dConstr.\n");
3871 newsize =
sizeof(
struct SFMatrix4d) * upper_power_of_two(argc);
3873 anyv->mfmatrix4d.p = MALLOC(
struct SFMatrix4d*, newsize);
3874 memset(anyv->mfmatrix4d.p, 0, newsize);
3879 DEFINE_LENGTH(cx, obj, argc)
3885#ifdef JSVRMLCLASSESVERBOSE
3886 printf(
"MFVec4dConstr: obj = %p, %u args\n", obj, argc);
3888 for (i = 0; i < argc; i++) {
3891 JS_GetElement(cx, _arrayObj, i, &vp);
3897 if (!JS_ValueToObject(cx, vp, &_obj)) {
3898 printf(
"JS_ValueToObject failed in MFMatrix4dConstr.\n");
3904 if (SM_method() == 2) {
3906 if ((any2 = (AnyNative*)JS_GetPrivateFw(cx, _obj)) != NULL) {
3909 if (any2->type == FIELDTYPE_SFMatrix4d) {
3910 shallow_copy_field(FIELDTYPE_SFMatrix4d, any2->v, (
union anyVrml*)&anyv->mfmatrix4d.p[i]);
3911 anyv->mfmatrix4d.n = i + 1;
3914 shallow_copy_field_precision(any2->type, FIELDTYPE_SFMatrix4d, any2->v, (
union anyVrml*)&anyv->mfmatrix4d.p[i]);
3915 anyv->mfmatrix4d.n = i + 1;
3921 *rval = OBJECT_TO_JSVAL(obj);
3926MFMatrix4dAssign(JSContext* cx, uintN argc, jsval* vp) {
3927 JSObject* obj = JS_THIS_OBJECT(cx, vp);
3928 jsval* argv = JS_ARGV(cx, vp);
3930 if (!_standardMFAssign(cx, obj, argc, argv, &rval, &MFMatrix4dClass, FIELDTYPE_SFMatrix4d)) {
return JS_FALSE; }
3931 JS_SET_RVAL(cx, vp, rval);
3938X3DMatrix4ToString(JSContext* cx, uintN argc, jsval* vp) {
3939 JSObject* obj = JS_THIS_OBJECT(cx, vp);
3940 jsval* argv = JS_ARGV(cx, vp);
3948 if (SM_method() == 2) {
3950 if ((ptr = (AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
3951 printf(
"JS_GetPrivate failed in SFMatrix4dToString.\n");
3954 cc = ptr->v->sfmatrix4d.c;
3956 memset(buff, 0, STRING);
3957 sprintf(buff,
"%.9g %.9g %.9g %.9g, %.9g %.9g %.9g %.9g, %.9g %.9g %.9g %.9g, %.9g %.9g %.9g %.9g",
3958 cc[0], cc[1], cc[2], cc[3],
3959 cc[4], cc[5], cc[6], cc[7],
3960 cc[8], cc[9], cc[10], cc[11],
3961 cc[12], cc[13], cc[14], cc[15]
3963 _str = JS_NewStringCopyZ(cx, buff);
3965 JS_SET_RVAL(cx, vp, STRING_TO_JSVAL(_str));
3970X3DMatrix4getTransform(JSContext* cx, uintN argc, jsval* vp) {
3971 JSObject* obj = JS_THIS_OBJECT(cx, vp);
3972 jsval* argv = JS_ARGV(cx, vp);
3974 JSObject* transObj = NULL;
3975 JSObject* rotObj = NULL;
3976 JSObject* scaleObj = NULL;
3982 double* matrix[4], retscale[3];
3989 if ((ptr = (AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
3990 printf(
"JS_GetPrivate failed in X3DMatrix4d.inverse.\n");
3993 cptr = &ptr->v->sfmatrix4d;
3995 for (i = 0; i < 4; i++)
3996 matrix[i] = &cptr->c[i * 4];
3999 for (i = 0; i < 3; i++)
4000 retscale[i] = sqrt(vecdot4d(matrix[i], matrix[i]));
4003 veccopyd(translation.c, matrix[3]);
4009 for (i = 0; i < 3; i++) {
4011 if (ff != 0.0) ff = 1.0 / ff;
4012 vecscale4d(&m2[i * 4], matrix[i], ff);
4016 matrix_to_quaternion(&quat, m2);
4019 quaternion_to_vrmlrot(&quat, &qu[0], &qu[1], &qu[2], &qu[3]);
4022 for (i = 0; i < 4; i++)
4023 rotation.c[i] = (
float)qu[i];
4028 veccopyd(scale.c, retscale);
4032 if (!JS_ConvertArguments(cx, argc, argv,
"o", &transObj)) {
4033 printf(
"getTransform, invalid parameters\n");
4038 if (!JS_ConvertArguments(cx, argc, argv,
"o o", &transObj, &rotObj)) {
4039 printf(
"getTransform, invalid parameters\n");
4044 if (!JS_ConvertArguments(cx, argc, argv,
"o o o",
4045 &transObj, &rotObj, &scaleObj)) {
4046 printf(
"getTransform, invalid parameters\n");
4053 if ((ptr = (AnyNative*)JS_GetPrivateFw(cx, transObj)) == NULL) {
4054 printf(
"JS_GetPrivate failed in X3DMatrix4d.getTransform.\n");
4057 shallow_copy_field_precision(FIELDTYPE_SFVec3d, ptr->type, (
union anyVrml*)&translation, ptr->v);
4061 if ((ptr = (AnyNative*)JS_GetPrivateFw(cx, rotObj)) == NULL) {
4062 printf(
"JS_GetPrivate failed in X3DMatrix4d.getTransform.\n");
4065 shallow_copy_field_precision(FIELDTYPE_SFRotation, ptr->type, (
union anyVrml*)&rotation, ptr->v);
4069 if ((ptr = (AnyNative*)JS_GetPrivateFw(cx, scaleObj)) == NULL) {
4070 printf(
"JS_GetPrivate failed in X3DMatrix4d.getTransform.\n");
4073 shallow_copy_field_precision(FIELDTYPE_SFVec3d, ptr->type, (
union anyVrml*)&scale, ptr->v);
4076 JS_SET_RVAL(cx, vp, OBJECT_TO_JSVAL(NULL));
4092X3DMatrix4setTransform(JSContext* cx, uintN argc, jsval* vp) {
4093 JSObject* obj = JS_THIS_OBJECT(cx, vp);
4094 jsval* argv = JS_ARGV(cx, vp);
4095 JSObject* transObj = NULL;
4096 JSObject* rotObj = NULL;
4097 JSObject* scaleObj = NULL;
4098 JSObject* scaleOObj = NULL;
4099 JSObject* centerObj = NULL;
4108 double* matrix[4], * mat[4], m2[16], dval;
4110 memset(&translation, 0,
sizeof(
struct SFVec3d));
4111 memset(&rotation, 0,
sizeof(
struct SFRotation));
4112 memset(&scale, 0,
sizeof(
struct SFVec3d));
4113 memset(&scaleOrientation, 0,
sizeof(
struct SFRotation));
4114 memset(¢er, 0,
sizeof(
struct SFVec3d));
4115 scale.c[0] = scale.c[1] = scale.c[2] = 1.0;
4116 rotation.c[0] = 1.0f;
4119 if ((anyret = (AnyNative*)AnyNativeNew(FIELDTYPE_SFMatrix4d, NULL, NULL)) == NULL) {
4120 printf(
"SFMatrix4dNativeNew failed in X3DMatrix4.multLeft.\n");
4125 if ((ptr = (AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
4126 printf(
"JS_GetPrivate failed in X3DMatrix4d.inverse.\n");
4129 cptr = &ptr->v->sfmatrix4d;
4137 if (argv[0].isObject()) {
4138 error = !JS_ValueToObject(cx, argv[0], &transObj);
4139 if (JS_IsArrayObject(cx, transObj)) {
4142 JS_GetArrayLength(cx, transObj, &lengthp);
4143 int ncopy = lengthp > 3 ? 3 : lengthp;
4144 for (i = 0; i < ncopy; i++) {
4145 JS_GetElement(cx, transObj, i, &vp);
4146 if (JS_ValueToNumber(cx, vp, &dval))
4147 translation.c[i] = dval;
4152 if ((ptr = (AnyNative*)JS_GetPrivateFw(cx, transObj)) == NULL) {
4153 printf(
"JS_GetPrivate failed in X3DMatrix3d.setTransform.\n");
4156 shallow_copy_field_precision(ptr->type, FIELDTYPE_SFVec3d, ptr->v, (
union anyVrml*)&translation);
4162 if (argv[1].isObject()) {
4163 error = !JS_ValueToObject(cx, argv[1], &rotObj);
4164 if (!JS_IsArrayObject(cx, rotObj)) {
4166 if ((ptr = (AnyNative*)JS_GetPrivateFw(cx, rotObj)) == NULL) {
4167 printf(
"JS_GetPrivate failed in X3DMatrix3d.setTransform.\n");
4170 shallow_copy_field_precision(ptr->type, FIELDTYPE_SFRotation, ptr->v, (
union anyVrml*)&rotation);
4176 if (argv[2].isNumber()) {
4177 JS_ValueToNumber(cx, argv[2], &dval);
4178 scale.c[0] = scale.c[1] = scale.c[2] = dval;
4180 else if (argv[2].isObject()) {
4181 error = !JS_ValueToObject(cx, argv[2], &scaleObj);
4182 if (JS_IsArrayObject(cx, scaleObj)) {
4185 JS_GetArrayLength(cx, scaleObj, &lengthp);
4186 int ncopy = lengthp > 3 ? 3 : lengthp;
4187 for (i = 0; i < ncopy; i++) {
4188 JS_GetElement(cx, scaleObj, i, &vp);
4189 if (JS_ValueToNumber(cx, vp, &dval))
4195 if ((ptr = (AnyNative*)JS_GetPrivateFw(cx, scaleObj)) == NULL) {
4196 printf(
"JS_GetPrivate failed in X3DMatrix3d.setTransform.\n");
4199 shallow_copy_field_precision(ptr->type, FIELDTYPE_SFVec3d, ptr->v, (
union anyVrml*)&scale);
4205 error = !JS_ConvertArguments(cx, argc, argv,
"o o o o", &transObj, &rotObj, &scaleObj, &scaleOObj);
4206 if (argv[3].isObject()) {
4207 error = !JS_ValueToObject(cx, argv[3], &scaleOObj);
4208 if (!JS_IsArrayObject(cx, scaleOObj)) {
4210 if ((ptr = (AnyNative*)JS_GetPrivateFw(cx, scaleOObj)) == NULL) {
4211 printf(
"JS_GetPrivate failed in X3DMatrix3d.setTransform.\n");
4214 shallow_copy_field_precision(ptr->type, FIELDTYPE_SFRotation, ptr->v, (
union anyVrml*)&scaleOrientation);
4219 if (argv[4].isObject()) {
4220 error = !JS_ValueToObject(cx, argv[4], ¢erObj);
4221 if (JS_IsArrayObject(cx, centerObj)) {
4224 JS_GetArrayLength(cx, centerObj, &lengthp);
4225 int ncopy = lengthp > 3 ? 3 : lengthp;
4226 for (i = 0; i < ncopy; i++) {
4227 JS_GetElement(cx, centerObj, i, &vp);
4228 if (JS_ValueToNumber(cx, vp, &dval))
4229 translation.c[i] = dval;
4234 if ((ptr = (AnyNative*)JS_GetPrivateFw(cx, centerObj)) == NULL) {
4235 printf(
"JS_GetPrivate failed in X3DMatrix3d.setTransform.\n");
4238 shallow_copy_field_precision(ptr->type, FIELDTYPE_SFVec3d, ptr->v, (
union anyVrml*)¢er);
4244 ConsoleMessage(
"setTransform: error in parameters");
4291 for (i = 0; i < 4; i++) {
4292 matrix[i] = &cptr->c[i * 4];
4293 mat[i] = &m2[i * 4];
4296 matidentity4d(matrix[0]);
4300 matidentity4d(mat[0]);
4301 veccopyd(mat[3], translation.c);
4302 matmultiplyFULL(matrix[0], mat[0], matrix[0]);
4306 matidentity4d(mat[0]);
4307 veccopyd(mat[3], center.c);
4308 matmultiplyFULL(matrix[0], mat[0], matrix[0]);
4313 matidentity4d(mat[0]);
4314 for (i = 0; i < 3; i++)
4315 axisangle_rotate3d(mat[i], mat[i], rotation.c);
4316 matmultiplyFULL(matrix[0], mat[0], matrix[0]);
4321 matidentity4d(mat[0]);
4322 for (i = 0; i < 3; i++)
4323 axisangle_rotate3d(mat[i], mat[i], scaleOrientation.c);
4324 matmultiplyFULL(matrix[0], mat[0], matrix[0]);
4329 matidentity4d(mat[0]);
4330 for (i = 0; i < 4; i++)
4331 vecmult3d(mat[i], mat[i], scale.c);
4332 matmultiplyFULL(matrix[0], mat[0], matrix[0]);
4338 scaleOrientation.c[3] = -scaleOrientation.c[3];
4339 matidentity4d(mat[0]);
4340 for (i = 0; i < 3; i++)
4341 axisangle_rotate3d(mat[i], mat[i], scaleOrientation.c);
4342 matmultiplyFULL(matrix[0], mat[0], matrix[0]);
4343 scaleOrientation.c[3] = -scaleOrientation.c[3];
4348 matidentity4d(mat[0]);
4349 veccopyd(mat[3], center.c);
4350 vecscaled(mat[3], mat[3], -1.0f);
4351 matmultiplyFULL(matrix[0], mat[0], matrix[0]);
4354 JS_SET_RVAL(cx, vp, OBJECT_TO_JSVAL(NULL));
4361X3DMatrix4inverse(JSContext* cx, uintN argc, jsval* vp) {
4362 JSObject* obj = JS_THIS_OBJECT(cx, vp);
4363 jsval* argv = JS_ARGV(cx, vp);
4366 JSObject* retObj = NULL;
4369 if ((anyret = (AnyNative*)AnyNativeNew(FIELDTYPE_SFMatrix4d, NULL, NULL)) == NULL) {
4370 printf(
"SFMatrix4dNativeNew failed in X3DMatrix4.multLeft.\n");
4375 if ((ptr = (AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
4376 printf(
"JS_GetPrivate failed in X3DMatrix4d.inverse.\n");
4379 cptr = &ptr->v->sfmatrix4d;
4380 ret = &anyret->v->sfmatrix4d;
4381 matidentity4d(ret->c);
4383 matinverseFULL(ret->c, cptr->c);
4385 retObj = JS_NewObject(cx, &X3DMatrix4Class, NULL, NULL);
4386 if (!JS_SetPrivateFw(cx, retObj, anyret)) {
4387 printf(
"JS_SetPrivate failed in X3DMatrix4.inverse.\n");
4390 JS_SET_RVAL(cx, vp, OBJECT_TO_JSVAL(retObj));
4396X3DMatrix4transpose(JSContext* cx, uintN argc, jsval* vp) {
4397 JSObject* obj = JS_THIS_OBJECT(cx, vp);
4398 jsval* argv = JS_ARGV(cx, vp);
4401 JSObject* retObj = NULL;
4404 if ((anyret = (AnyNative*)AnyNativeNew(FIELDTYPE_SFMatrix4d, NULL, NULL)) == NULL) {
4405 printf(
"SFMatrix4dNativeNew failed in X3DMatrix4.multLeft.\n");
4410 if ((ptr = (AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
4411 printf(
"JS_GetPrivate failed in X3DMatrix4d.transpose.\n");
4414 cptr = &ptr->v->sfmatrix4d;
4415 ret = &anyret->v->sfmatrix4d;
4416 mattranspose(ret->c, cptr->c);
4418 retObj = JS_NewObject(cx, &X3DMatrix4Class, NULL, NULL);
4419 if (!JS_SetPrivateFw(cx, retObj, anyret)) {
4420 printf(
"JS_SetPrivate failed in X3DMatrix4.inverse.\n");
4423 JS_SET_RVAL(cx, vp, OBJECT_TO_JSVAL(retObj));
4430X3DMatrix4multLeft(JSContext* cx, uintN argc, jsval* vp) {
4431 JSObject* obj = JS_THIS_OBJECT(cx, vp);
4432 jsval* argv = JS_ARGV(cx, vp);
4436 JSObject* rhsObj = NULL;
4437 JSObject* retObj = NULL;
4440 if ((anyret = (AnyNative*)AnyNativeNew(FIELDTYPE_SFMatrix4d, NULL, NULL)) == NULL) {
4441 printf(
"SFMatrix4dNativeNew failed in X3DMatrix4.multLeft.\n");
4446 if ((ptr = (AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
4447 printf(
"JS_GetPrivate failed in X3DMatrix4d.multLeft.\n");
4450 cptr = &ptr->v->sfmatrix4d;
4451 ret = &anyret->v->sfmatrix4d;
4452 matidentity4d(ret->c);
4453 matidentity4d(rhs.c);
4456 if (!JS_ConvertArguments(cx, argc, argv,
"o", &rhsObj)) {
4457 printf(
"JS_ConvertArgs failed in X3DMatrix4d.multLeft.\n");
4461 if ((rhsptr = (AnyNative*)JS_GetPrivateFw(cx, rhsObj)) == NULL) {
4462 printf(
"JS_GetPrivate failed in X3DMatrix4d.multLeft.\n");
4465 shallow_copy_field_precision(rhsptr->type, FIELDTYPE_SFMatrix4d, rhsptr->v, (
union anyVrml*)&rhs);
4467 matmultiplyFULL(ret->c, rhs.c, cptr->c);
4469 retObj = JS_NewObject(cx, &X3DMatrix4Class, NULL, NULL);
4470 if (!JS_SetPrivateFw(cx, retObj, anyret)) {
4471 printf(
"JS_SetPrivate failed in SFMatrix3dConstr.\n");
4474 JS_SET_RVAL(cx, vp, OBJECT_TO_JSVAL(retObj));
4479X3DMatrix4multRight(JSContext* cx, uintN argc, jsval* vp) {
4480 JSObject* obj = JS_THIS_OBJECT(cx, vp);
4481 jsval* argv = JS_ARGV(cx, vp);
4485 JSObject* rhsObj = NULL;
4486 JSObject* retObj = NULL;
4489 if ((anyret = (AnyNative*)AnyNativeNew(FIELDTYPE_SFMatrix4d, NULL, NULL)) == NULL) {
4490 printf(
"SFMatrix4dNativeNew failed in X3DMatrix4.multLeft.\n");
4495 if ((ptr = (AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
4496 printf(
"JS_GetPrivate failed in X3DMatrix4d.multLeft.\n");
4499 cptr = &ptr->v->sfmatrix4d;
4500 ret = &anyret->v->sfmatrix4d;
4501 matidentity4d(ret->c);
4502 matidentity4d(rhs.c);
4505 if (!JS_ConvertArguments(cx, argc, argv,
"o", &rhsObj)) {
4506 printf(
"JS_ConvertArgs failed in X3DMatrix4d.multLeft.\n");
4510 if ((rhsptr = (AnyNative*)JS_GetPrivateFw(cx, rhsObj)) == NULL) {
4511 printf(
"JS_GetPrivate failed in X3DMatrix4d.multLeft.\n");
4514 shallow_copy_field_precision(rhsptr->type, FIELDTYPE_SFMatrix4d, rhsptr->v, (
union anyVrml*)&rhs);
4516 matmultiplyFULL(ret->c, cptr->c, rhs.c);
4518 retObj = JS_NewObject(cx, &X3DMatrix4Class, NULL, NULL);
4519 if (!JS_SetPrivateFw(cx, retObj, anyret)) {
4520 printf(
"JS_SetPrivate failed in X3DMatrix4d.multLeft.\n");
4523 JS_SET_RVAL(cx, vp, OBJECT_TO_JSVAL(retObj));
4529X3DMatrix4multVecMatrix(JSContext* cx, uintN argc, jsval* vp) {
4530 JSObject* obj = JS_THIS_OBJECT(cx, vp);
4531 jsval* argv = JS_ARGV(cx, vp);
4535 JSObject* rhsObj = NULL;
4536 JSObject* retObj = NULL;
4539 if ((anyret = (AnyNative*)AnyNativeNew(FIELDTYPE_SFVec3d, NULL, NULL)) == NULL) {
4540 printf(
"SFVec3dNativeNew failed in X3DMatrix4.multVecMatrix.\n");
4545 if ((ptr = (AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
4546 printf(
"JS_GetPrivate failed in X3DMatrix4d.multVecMatrix.\n");
4549 cptr = &ptr->v->sfmatrix4d;
4550 ret = &anyret->v->sfvec3d;
4551 vecsetd(ret->c,0.0,0.0,0.0);
4552 vecsetd(rhs.c, 0.0, 0.0, 0.0);
4555 if (!JS_ConvertArguments(cx, argc, argv,
"o", &rhsObj)) {
4556 printf(
"JS_ConvertArgs failed in X3DMatrix4d.multVecMatrix.\n");
4560 if ((rhsptr = (AnyNative*)JS_GetPrivateFw(cx, rhsObj)) == NULL) {
4561 printf(
"JS_GetPrivate failed in X3DMatrix4d.multVecMatrix.\n");
4564 shallow_copy_field_precision(rhsptr->type, FIELDTYPE_SFVec3d, rhsptr->v, (
union anyVrml*)&rhs);
4566 double a4[4], r4[4];
4567 veccopyd(a4, rhs.c);
4569 vecmultmat4d(r4, a4, cptr->c);
4571 double wi = 1.0 / r4[3];
4572 vecscaled(ret->c, r4, wi);
4575 veccopyd(ret->c, r4);
4578 retObj = JS_NewObject(cx, &SFVec3dClass, NULL, NULL);
4579 if (!JS_SetPrivateFw(cx, retObj, anyret)) {
4580 printf(
"JS_SetPrivate failed in X3DMatrix4d.multVecMatrix.\n");
4583 JS_SET_RVAL(cx, vp, OBJECT_TO_JSVAL(retObj));
4589X3DMatrix4multMatrixVec(JSContext* cx, uintN argc, jsval* vp) {
4590 JSObject* obj = JS_THIS_OBJECT(cx, vp);
4591 jsval* argv = JS_ARGV(cx, vp);
4595 JSObject* rhsObj = NULL;
4596 JSObject* retObj = NULL;
4599 if ((anyret = (AnyNative*)AnyNativeNew(FIELDTYPE_SFVec3d, NULL, NULL)) == NULL) {
4600 printf(
"SFVec3dNativeNew failed in X3DMatrix4.multVecMatrix.\n");
4605 if ((ptr = (AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
4606 printf(
"JS_GetPrivate failed in X3DMatrix4d.multVecMatrix.\n");
4609 cptr = &ptr->v->sfmatrix4d;
4610 ret = &anyret->v->sfvec3d;
4611 vecsetd(ret->c, 0.0, 0.0, 0.0);
4612 vecsetd(rhs.c, 0.0, 0.0, 0.0);
4615 if (!JS_ConvertArguments(cx, argc, argv,
"o", &rhsObj)) {
4616 printf(
"JS_ConvertArgs failed in X3DMatrix4d.multVecMatrix.\n");
4620 if ((rhsptr = (AnyNative*)JS_GetPrivateFw(cx, rhsObj)) == NULL) {
4621 printf(
"JS_GetPrivate failed in X3DMatrix4d.multVecMatrix.\n");
4624 shallow_copy_field_precision(rhsptr->type, FIELDTYPE_SFVec3d, rhsptr->v, (
union anyVrml*)&rhs);
4626 double a4[4], r4[4];
4627 veccopyd(a4, rhs.c);
4629 matmultvec4d(r4, cptr->c, a4);
4631 double wi = 1.0 / r4[3];
4632 vecscaled(ret->c, r4, wi);
4635 veccopyd(ret->c, r4);
4638 retObj = JS_NewObject(cx, &SFVec3dClass, NULL, NULL);
4639 if (!JS_SetPrivateFw(cx, retObj, anyret)) {
4640 printf(
"JS_SetPrivate failed in X3DMatrix4d.multVecMatrix.\n");
4643 JS_SET_RVAL(cx, vp, OBJECT_TO_JSVAL(retObj));
4649X3DMatrix4Assign(JSContext* cx, uintN argc, jsval* vp) {
4650 JSObject* obj = JS_THIS_OBJECT(cx, vp);
4651 jsval* argv = JS_ARGV(cx, vp);
4653 if (!_standardMFAssign(cx, obj, argc, argv, &rval, &X3DMatrix4Class, FIELDTYPE_FreeWRLPTR)) {
return JS_FALSE; }
4654 JS_SET_RVAL(cx, vp, rval);
4660X3DMatrix4Constr(JSContext* cx, uintN argc, jsval* vp) {
4661 JSObject* obj = JS_NewObject(cx, &X3DMatrix4Class, NULL, NULL);
4662 jsval* argv = JS_ARGV(cx, vp);
4668 if ((any = (AnyNative*)AnyNativeNew(FIELDTYPE_SFMatrix4d, NULL, NULL)) == NULL) {
4669 printf(
"SFMatrix4dNativeNew failed in X3DMatrix4Constr.\n");
4673 if (!JS_SetPrivateFw(cx, obj, any)) {
4674 printf(
"JS_SetPrivate failed in SFMatrix4dConstr.\n");
4677 cc = any->v->sfmatrix4d.c;
4686 if (!JS_ValueToObject(cx, argv[0], ¶mObj)) {
4687 printf(
"JS_ValueToObject failed in SFMatrix4dConstr.\n");
4691 if (JS_IsArrayObject(cx, paramObj)) {
4697 JS_GetArrayLength(cx, paramObj, &lengthp);
4698 ncopy = lengthp > 16 ? 16 : lengthp;
4699 for (
int i = 0; i < ncopy; i++) {
4700 JS_GetElement(cx, paramObj, i, &vp);
4701 if (JS_ValueToNumber(cx, vp, &_d))
4708 if ((pptr = (AnyNative*)JS_GetPrivateFw(cx, paramObj)) == NULL) {
4709 printf(
"JS_GetPrivate failed in X3DMatrix4Constr.\n");
4712 shallow_copy_field_precision(pptr->type, FIELDTYPE_SFMatrix4d, pptr->v, (
union anyVrml*)cc);
4715 else if (argc == 16) {
4716 if (!JS_ConvertArguments(cx, argc, argv,
"d d d d d d d d d d d d d d d d",
4717 &(pars[0]), &(pars[1]), &(pars[2]), &(pars[3]),
4718 &(pars[4]), &(pars[5]), &(pars[6]), &(pars[7]),
4719 &(pars[8]), &(pars[9]), &(pars[10]), &(pars[11]),
4720 &(pars[12]), &(pars[13]), &(pars[14]), &(pars[15])
4723 printf(
"JS_ConvertArguments failed in X3DMatrix4Constr.\n");
4726 for (
int i = 0; i < 16; i++)
4727 cc[i] = (
double)pars[i];
4729 JS_SET_RVAL(cx, vp, OBJECT_TO_JSVAL(obj));
4734X3DMatrix4AddProperty(JSContext* cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp) {
4735 JSObject* obj = *hobj.address();
4736 jsid
id = *hiid.address();
4737 jsval* vp = hvp.address();
4738 return doMFAddProperty(cx, obj,
id, vp,
"X3DMatrix4AddProperty");
4742X3DMatrix4GetProperty(JSContext* cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp) {
4743 JSObject* obj = *hobj.address();
4744 jsid iid = *hiid.address();
4745 jsval* vp = hvp.address();
4749 if (!JS_IdToValue(cx, iid, &
id)) {
4750 printf(
"JS_IdToValue failed in X3DMatrix4.GetProperty.\n");
4754 if (JSVAL_IS_INT(
id)) {
4755 index = JSVAL_TO_INT(
id);
4756 if (index > -1 && index < 4) {
4760 if ((ptr = (AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
4761 printf(
"JS_GetPrivate failed in X3DMatrix4d.multLeft.\n");
4764 cptr = &ptr->v->sfmatrix4d;
4765 double* row = &cptr->c[index * 4];
4768 if ((anyret = (AnyNative*)AnyNativeNew(FIELDTYPE_SFVec4d, NULL, NULL)) == NULL) {
4769 printf(
"SFVec4dNativeNew failed in X3DMatrix4.GetProperty.\n");
4773 anyret->type = FIELDTYPE_SFVec4d;
4774 anyret->v = (
union anyVrml*)row;
4775 JSObject *retObj = JS_NewObject(cx, &SFVec4dClass, NULL, NULL);
4776 if (!JS_SetPrivateFw(cx, retObj, anyret)) {
4777 printf(
"JS_SetPrivate failed in SFMatrix3dConstr.\n");
4780 JS_SET_RVAL(cx, vp, OBJECT_TO_JSVAL(retObj));
4785 else if (
id.isObject()) {
4792X3DMatrix4SetProperty(JSContext* cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp) {
4793 JSObject* obj = *hobj.address();
4794 jsid iid = *hiid.address();
4795 jsval* vp = hvp.address();
4800 if (!JS_IdToValue(cx, iid, &
id)) {
4801 printf(
"JS_IdToValue failed in X3DMatrix4.GetProperty.\n");
4805 if (JSVAL_IS_INT(
id)) {
4806 index = JSVAL_TO_INT(
id);
4807 if (index > -1 && index < 4) {
4810 if (!JS_ValueToNumber(cx, *vp, &rhs)) {
4811 printf(
"problems converting Javascript val to number in X3DMatrix.SetProperty\n");
4816 if ((ptr = (AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
4817 printf(
"JS_GetPrivate failed in X3DMatrix4d.multLeft.\n");
4820 cptr = &ptr->v->sfmatrix4d;
4821 double* row = &cptr->c[index * 4];
4827 else if (
id.isObject()) {
4836X3DMatrix3ToString(JSContext* cx, uintN argc, jsval* vp) {
4837 JSObject* obj = JS_THIS_OBJECT(cx, vp);
4838 jsval* argv = JS_ARGV(cx, vp);
4846 if (SM_method() == 2) {
4848 if ((ptr = (AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
4849 printf(
"JS_GetPrivate failed in SFMatrix3dToString.\n");
4852 cc = ptr->v->sfmatrix3d.c;
4854 memset(buff, 0, STRING);
4855 sprintf(buff,
"%.9g %.9g %.9g, %.9g %.9g %.9g, %.9g %.9g %.9g",
4856 cc[0], cc[1], cc[2],
4857 cc[3], cc[4], cc[5],
4860 _str = JS_NewStringCopyZ(cx, buff);
4862 JS_SET_RVAL(cx, vp, STRING_TO_JSVAL(_str));
4867X3DMatrix3getTransform(JSContext* cx, uintN argc, jsval* vp) {
4868 JSObject* obj = JS_THIS_OBJECT(cx, vp);
4869 jsval* argv = JS_ARGV(cx, vp);
4871 JSObject* transObj = NULL;
4872 JSObject* rotObj = NULL;
4873 JSObject* scaleObj = NULL;
4879 double* matrix[3], retscale[2];
4880 double matrixd[9], angle;
4884 if ((ptr = (AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
4885 printf(
"JS_GetPrivate failed in X3DMatrix3d.inverse.\n");
4888 cptr = &ptr->v->sfmatrix3d;
4890 for (i = 0; i < 3; i++)
4891 matrix[i] = &cptr->c[i * 3];
4894 for (i = 0; i < 2; i++)
4895 retscale[i] = sqrt(vecdotd(matrix[i], matrix[i]));
4896 veccopy2d(scale.c, retscale);
4898 veccopy2d(translation.c, matrix[2]);
4906 for (i = 0; i < 2; i++) {
4908 if (ff != 0.0f) ff = 1 / ff;
4909 vecscaled(&m2[i * 3], matrix[i], ff);
4911 angle = atan2(m2[1], m2[2]);
4914 memset(&rotation, 0,
sizeof(
struct SFVec3d));
4915 rotation.c[0] = cos(angle);
4916 rotation.c[1] = sin(angle);
4917 rotation.c[2] = angle;
4921 if (!JS_ConvertArguments(cx, argc, argv,
"o", &transObj)) {
4922 printf(
"getTransform, invalid parameters\n");
4927 if (!JS_ConvertArguments(cx, argc, argv,
"o o", &transObj, &rotObj)) {
4928 printf(
"getTransform, invalid parameters\n");
4933 if (!JS_ConvertArguments(cx, argc, argv,
"o o o",
4934 &transObj, &rotObj, &scaleObj)) {
4935 printf(
"getTransform, invalid parameters\n");
4942 if ((ptr = (AnyNative*)JS_GetPrivateFw(cx, transObj)) == NULL) {
4943 printf(
"JS_GetPrivate failed in X3DMatrix3d.getTransform.\n");
4946 shallow_copy_field_precision(FIELDTYPE_SFVec2d, ptr->type, (
union anyVrml*)&translation, ptr->v);
4950 if ((ptr = (AnyNative*)JS_GetPrivateFw(cx, rotObj)) == NULL) {
4951 printf(
"JS_GetPrivate failed in X3DMatrix3d.getTransform.\n");
4954 shallow_copy_field_precision(FIELDTYPE_SFVec3d, ptr->type, (
union anyVrml*)&rotation, ptr->v);
4958 if ((ptr = (AnyNative*)JS_GetPrivateFw(cx, scaleObj)) == NULL) {
4959 printf(
"JS_GetPrivate failed in X3DMatrix3d.getTransform.\n");
4962 shallow_copy_field_precision(FIELDTYPE_SFVec2d, ptr->type, (
union anyVrml*)&scale, ptr->v);
4965 JS_SET_RVAL(cx, vp, OBJECT_TO_JSVAL(NULL));
4981X3DMatrix3setTransform(JSContext* cx, uintN argc, jsval* vp) {
4982 JSObject* obj = JS_THIS_OBJECT(cx, vp);
4983 jsval* argv = JS_ARGV(cx, vp);
4984 JSObject* transObj = NULL;
4985 JSObject* rotObj = NULL;
4986 JSObject* scaleObj = NULL;
4987 JSObject* scaleOObj = NULL;
4988 JSObject* centerObj = NULL;
4994 struct SFVec3d scaleOrientation;
4997 double* matrix[3], * mat[3], m2[9], angle, scaleangle, dval;
4999 memset(&translation, 0,
sizeof(
struct SFVec2d));
5000 memset(&rotation, 0,
sizeof(
struct SFVec3d));
5001 memset(&scale, 0,
sizeof(
struct SFVec2d));
5002 memset(&scaleOrientation, 0,
sizeof(
struct SFVec3d));
5003 memset(¢er, 0,
sizeof(
struct SFVec2d));
5004 scale.c[0] = scale.c[1] = 1.0;
5005 angle = scaleangle = 0.0;
5008 if ((anyret = (AnyNative*)AnyNativeNew(FIELDTYPE_SFMatrix3d, NULL, NULL)) == NULL) {
5009 printf(
"SFMatrix3dNativeNew failed in X3DMatrix3.multLeft.\n");
5014 if ((ptr = (AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
5015 printf(
"JS_GetPrivate failed in X3DMatrix3d.inverse.\n");
5018 cptr = &ptr->v->sfmatrix3d;
5024 error = !JS_ValueToObject(cx, argv[0], &transObj);
5025 if (JS_IsArrayObject(cx, transObj)) {
5028 JS_GetArrayLength(cx, transObj, &lengthp);
5029 int ncopy = lengthp > 2 ? 2 : lengthp;
5030 for (i = 0; i < 2; i++) {
5031 JS_GetElement(cx, transObj, i, &vp);
5032 if (JS_ValueToNumber(cx, vp, &dval))
5033 translation.c[i] = dval;
5038 if ((ptr = (AnyNative*)JS_GetPrivateFw(cx, transObj)) == NULL) {
5039 printf(
"JS_GetPrivate failed in X3DMatrix3d.setTransform.\n");
5042 shallow_copy_field_precision(ptr->type, FIELDTYPE_SFVec2d, ptr->v, (
union anyVrml*)&translation);
5047 if (argv[1].isNumber()) {
5049 JS_ValueToNumber(cx, argv[1], &val);
5053 error = !JS_ValueToObject(cx, argv[1], &rotObj);
5055 if ((ptr = (AnyNative*)JS_GetPrivateFw(cx, rotObj)) == NULL) {
5056 printf(
"JS_GetPrivate failed in X3DMatrix3d.setTransform.\n");
5059 shallow_copy_field_precision(ptr->type, FIELDTYPE_SFVec3d, ptr->v, (
union anyVrml*)&rotation);
5060 angle = rotation.c[2];
5065 if (argv[2].isNumber()) {
5067 JS_ValueToNumber(cx, argv[2], &val);
5068 scale.c[0] = scale.c[1] = val;
5070 else if (argv[2].isObject()) {
5071 error = !JS_ValueToObject(cx, argv[2], &scaleObj);
5072 if (JS_IsArrayObject(cx, scaleObj)) {
5075 JS_GetArrayLength(cx, scaleObj, &lengthp);
5076 int ncopy = lengthp > 2 ? 2 : lengthp;
5077 for (i = 0; i < 2; i++) {
5078 JS_GetElement(cx, scaleObj, i, &vp);
5079 if (JS_ValueToNumber(cx, vp, &dval))
5085 if ((ptr = (AnyNative*)JS_GetPrivateFw(cx, scaleObj)) == NULL) {
5086 printf(
"JS_GetPrivate failed in X3DMatrix3d.setTransform.\n");
5089 shallow_copy_field_precision(ptr->type, FIELDTYPE_SFVec2d, ptr->v, (
union anyVrml*)&scale);
5095 if (argv[3].isNumber()) {
5097 JS_ValueToNumber(cx, argv[3], &val);
5101 error = !JS_ValueToObject(cx, argv[3], &scaleOObj);
5103 if ((ptr = (AnyNative*)JS_GetPrivateFw(cx, scaleOObj)) == NULL) {
5104 printf(
"JS_GetPrivate failed in X3DMatrix3d.setTransform.\n");
5107 shallow_copy_field_precision(ptr->type, FIELDTYPE_SFVec3d, ptr->v, (
union anyVrml*)&rotation);
5108 scaleangle = rotation.c[2];
5113 if (argv[4].isObject()) {
5114 error = !JS_ValueToObject(cx, argv[4], ¢erObj);
5115 if (JS_IsArrayObject(cx, centerObj)) {
5118 JS_GetArrayLength(cx, centerObj, &lengthp);
5119 int ncopy = lengthp > 2 ? 2 : lengthp;
5120 for (i = 0; i < 2; i++) {
5121 JS_GetElement(cx, centerObj, i, &vp);
5122 if (JS_ValueToNumber(cx, vp, &dval))
5128 if ((ptr = (AnyNative*)JS_GetPrivateFw(cx, centerObj)) == NULL) {
5129 printf(
"JS_GetPrivate failed in X3DMatrix3d.setTransform.\n");
5132 shallow_copy_field_precision(ptr->type, FIELDTYPE_SFVec2d, ptr->v, (
union anyVrml*)¢er);
5138 ConsoleMessage(
"setTransform: error in parameters");
5142 for (i = 0; i < 3; i++) {
5143 matrix[i] = &cptr->c[i * 3];
5144 mat[i] = &m2[i * 3];
5147 matidentity3d(matrix[0]);
5151 matidentity3d(mat[0]);
5152 veccopy2d(mat[2], translation.c);
5153 matmultiply3d(matrix[0], mat[0], matrix[0]);
5157 matidentity3d(mat[0]);
5158 veccopy2d(mat[2], center.c);
5159 matmultiply3d(matrix[0], mat[0], matrix[0]);
5162 if (angle != 0.0f) {
5163 matidentity3d(mat[0]);
5164 mat[0][0] = mat[1][1] = cos(angle);
5165 mat[0][1] = mat[1][0] = sin(angle);
5166 mat[1][0] = -mat[1][0];
5167 matmultiply3d(matrix[0], mat[0], matrix[0]);
5170 if (scaleangle != 0.0f) {
5171 matidentity3d(mat[0]);
5172 mat[0][0] = mat[1][1] = cos(scaleangle);
5173 mat[0][1] = mat[1][0] = sin(scaleangle);
5174 mat[1][0] = -mat[1][0];
5175 matmultiply3d(matrix[0], mat[0], matrix[0]);
5179 matidentity3d(mat[0]);
5180 for (i = 0; i < 3; i++)
5181 vecmult2d(mat[i], mat[i], scale.c);
5182 matmultiply3d(matrix[0], mat[0], matrix[0]);
5186 if (scaleangle != 0.0) {
5187 matidentity3d(mat[0]);
5188 mat[0][0] = mat[1][1] = cos(-scaleangle);
5189 mat[0][1] = mat[1][0] = sin(-scaleangle);
5190 mat[1][0] = -mat[1][0];
5191 matmultiply3d(matrix[0], mat[0], matrix[0]);
5196 matidentity3d(mat[0]);
5197 veccopy2d(mat[2], center.c);
5198 vecscale2d(mat[2], mat[2], -1.0);
5199 matmultiply3d(matrix[0], mat[0], matrix[0]);
5202 JS_SET_RVAL(cx, vp, OBJECT_TO_JSVAL(NULL));
5209X3DMatrix3inverse(JSContext* cx, uintN argc, jsval* vp) {
5210 JSObject* obj = JS_THIS_OBJECT(cx, vp);
5211 jsval* argv = JS_ARGV(cx, vp);
5214 JSObject* retObj = NULL;
5217 if ((anyret = (AnyNative*)AnyNativeNew(FIELDTYPE_SFMatrix3d, NULL, NULL)) == NULL) {
5218 printf(
"SFMatrix3dNativeNew failed in X3DMatrix3.multLeft.\n");
5223 if ((ptr = (AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
5224 printf(
"JS_GetPrivate failed in X3DMatrix3d.inverse.\n");
5227 cptr = &ptr->v->sfmatrix3d;
5228 ret = &anyret->v->sfmatrix3d;
5230 matinverse3d(ret->c, cptr->c);
5232 retObj = JS_NewObject(cx, &X3DMatrix3Class, NULL, NULL);
5233 if (!JS_SetPrivateFw(cx, retObj, anyret)) {
5234 printf(
"JS_SetPrivate failed in X3DMatrix3.inverse.\n");
5237 JS_SET_RVAL(cx, vp, OBJECT_TO_JSVAL(retObj));
5243X3DMatrix3transpose(JSContext* cx, uintN argc, jsval* vp) {
5244 JSObject* obj = JS_THIS_OBJECT(cx, vp);
5245 jsval* argv = JS_ARGV(cx, vp);
5248 JSObject* retObj = NULL;
5251 if ((anyret = (AnyNative*)AnyNativeNew(FIELDTYPE_SFMatrix3d, NULL, NULL)) == NULL) {
5252 printf(
"SFMatrix3dNativeNew failed in X3DMatrix3.multLeft.\n");
5257 if ((ptr = (AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
5258 printf(
"JS_GetPrivate failed in X3DMatrix3d.transpose.\n");
5261 cptr = &ptr->v->sfmatrix3d;
5262 ret = &anyret->v->sfmatrix3d;
5263 mattranspose3d(ret->c, cptr->c);
5265 retObj = JS_NewObject(cx, &X3DMatrix3Class, NULL, NULL);
5266 if (!JS_SetPrivateFw(cx, retObj, anyret)) {
5267 printf(
"JS_SetPrivate failed in X3DMatrix3.inverse.\n");
5270 JS_SET_RVAL(cx, vp, OBJECT_TO_JSVAL(retObj));
5276X3DMatrix3multLeft(JSContext* cx, uintN argc, jsval* vp) {
5277 JSObject* obj = JS_THIS_OBJECT(cx, vp);
5278 jsval* argv = JS_ARGV(cx, vp);
5282 JSObject* rhsObj = NULL;
5283 JSObject* retObj = NULL;
5286 if ((anyret = (AnyNative*)AnyNativeNew(FIELDTYPE_SFMatrix3d, NULL, NULL)) == NULL) {
5287 printf(
"SFMatrix3dNativeNew failed in X3DMatrix3.multLeft.\n");
5292 if ((ptr = (AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
5293 printf(
"JS_GetPrivate failed in X3DMatrix3d.multLeft.\n");
5296 cptr = &ptr->v->sfmatrix3d;
5297 ret = &anyret->v->sfmatrix3d;
5298 matidentity3d(ret->c);
5299 matidentity3d(rhs.c);
5302 if (!JS_ConvertArguments(cx, argc, argv,
"o", &rhsObj)) {
5303 printf(
"JS_ConvertArgs failed in X3DMatrix3d.multLeft.\n");
5307 if ((rhsptr = (AnyNative*)JS_GetPrivateFw(cx, rhsObj)) == NULL) {
5308 printf(
"JS_GetPrivate failed in X3DMatrix3d.multLeft.\n");
5311 shallow_copy_field_precision(rhsptr->type, FIELDTYPE_SFMatrix3d, rhsptr->v, (
union anyVrml*)&rhs);
5313 matmultiply3d(ret->c, rhs.c, cptr->c);
5316 retObj = JS_NewObject(cx, &X3DMatrix3Class, NULL, NULL);
5317 if (!JS_SetPrivateFw(cx, retObj, anyret)) {
5318 printf(
"JS_SetPrivate failed in SFMatrix3dConstr.\n");
5321 JS_SET_RVAL(cx, vp, OBJECT_TO_JSVAL(retObj));
5326X3DMatrix3multRight(JSContext* cx, uintN argc, jsval* vp) {
5327 JSObject* obj = JS_THIS_OBJECT(cx, vp);
5328 jsval* argv = JS_ARGV(cx, vp);
5332 JSObject* rhsObj = NULL;
5333 JSObject* retObj = NULL;
5336 if ((anyret = (AnyNative*)AnyNativeNew(FIELDTYPE_SFMatrix3d, NULL, NULL)) == NULL) {
5337 printf(
"SFMatrix3dNativeNew failed in X3DMatrix3.multLeft.\n");
5342 if ((ptr = (AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
5343 printf(
"JS_GetPrivate failed in X3DMatrix3d.multLeft.\n");
5346 cptr = &ptr->v->sfmatrix3d;
5347 ret = &anyret->v->sfmatrix3d;
5348 matidentity3d(ret->c);
5349 matidentity3d(rhs.c);
5352 if (!JS_ConvertArguments(cx, argc, argv,
"o", &rhsObj)) {
5353 printf(
"JS_ConvertArgs failed in X3DMatrix3d.multLeft.\n");
5357 if ((rhsptr = (AnyNative*)JS_GetPrivateFw(cx, rhsObj)) == NULL) {
5358 printf(
"JS_GetPrivate failed in X3DMatrix3d.multLeft.\n");
5361 shallow_copy_field_precision(rhsptr->type, FIELDTYPE_SFMatrix3d, rhsptr->v, (
union anyVrml*)&rhs);
5363 matmultiply3d(ret->c, cptr->c, rhs.c);
5365 retObj = JS_NewObject(cx, &X3DMatrix3Class, NULL, NULL);
5366 if (!JS_SetPrivateFw(cx, retObj, anyret)) {
5367 printf(
"JS_SetPrivate failed in X3DMatrix3d.multLeft.\n");
5370 JS_SET_RVAL(cx, vp, OBJECT_TO_JSVAL(retObj));
5376X3DMatrix3multVecMatrix(JSContext* cx, uintN argc, jsval* vp) {
5377 JSObject* obj = JS_THIS_OBJECT(cx, vp);
5378 jsval* argv = JS_ARGV(cx, vp);
5382 JSObject* rhsObj = NULL;
5383 JSObject* retObj = NULL;
5386 if ((anyret = (AnyNative*)AnyNativeNew(FIELDTYPE_SFVec2d, NULL, NULL)) == NULL) {
5387 printf(
"SFVec2dNativeNew failed in X3DMatrix3.multVecMatrix.\n");
5392 if ((ptr = (AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
5393 printf(
"JS_GetPrivate failed in X3DMatrix3d.multVecMatrix.\n");
5396 cptr = &ptr->v->sfmatrix3d;
5397 ret = &anyret->v->sfvec2d;
5398 vecset2d(ret->c, 0.0, 0.0);
5399 vecset2d(rhs.c, 0.0, 0.0);
5402 if (!JS_ConvertArguments(cx, argc, argv,
"o", &rhsObj)) {
5403 printf(
"JS_ConvertArgs failed in X3DMatrix3d.multVecMatrix.\n");
5407 if ((rhsptr = (AnyNative*)JS_GetPrivateFw(cx, rhsObj)) == NULL) {
5408 printf(
"JS_GetPrivate failed in X3DMatrix3d.multVecMatrix.\n");
5411 shallow_copy_field_precision(rhsptr->type, FIELDTYPE_SFVec2d, rhsptr->v, (
union anyVrml*)&rhs);
5413 double a3[3], r3[3];
5414 veccopy2d(a3, rhs.c);
5416 vecmultmat3d(r3, a3, cptr->c);
5418 double wi = 1.0 / r3[2];
5419 vecscale2d(ret->c, r3, wi);
5422 veccopy2d(ret->c, r3);
5425 retObj = JS_NewObject(cx, &SFVec2dClass, NULL, NULL);
5426 if (!JS_SetPrivateFw(cx, retObj, anyret)) {
5427 printf(
"JS_SetPrivate failed in X3DMatrix3d.multVecMatrix.\n");
5430 JS_SET_RVAL(cx, vp, OBJECT_TO_JSVAL(retObj));
5436X3DMatrix3multMatrixVec(JSContext* cx, uintN argc, jsval* vp) {
5437 JSObject* obj = JS_THIS_OBJECT(cx, vp);
5438 jsval* argv = JS_ARGV(cx, vp);
5442 JSObject* rhsObj = NULL;
5443 JSObject* retObj = NULL;
5446 if ((anyret = (AnyNative*)AnyNativeNew(FIELDTYPE_SFVec2d, NULL, NULL)) == NULL) {
5447 printf(
"SFVec2dNativeNew failed in X3DMatrix3.multVecMatrix.\n");
5452 if ((ptr = (AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
5453 printf(
"JS_GetPrivate failed in X3DMatrix3d.multVecMatrix.\n");
5456 cptr = &ptr->v->sfmatrix3d;
5457 ret = &anyret->v->sfvec2d;
5458 vecset2d(ret->c, 0.0, 0.0);
5459 vecset2d(rhs.c, 0.0, 0.0);
5462 if (!JS_ConvertArguments(cx, argc, argv,
"o", &rhsObj)) {
5463 printf(
"JS_ConvertArgs failed in X3DMatrix3d.multVecMatrix.\n");
5467 if ((rhsptr = (AnyNative*)JS_GetPrivateFw(cx, rhsObj)) == NULL) {
5468 printf(
"JS_GetPrivate failed in X3DMatrix3d.multVecMatrix.\n");
5471 shallow_copy_field_precision(rhsptr->type, FIELDTYPE_SFVec2d, rhsptr->v, (
union anyVrml*)&rhs);
5473 double a3[3], r3[3];
5474 veccopy2d(a3, rhs.c);
5476 matmultvec3d(r3, cptr->c, a3);
5477 if (r3[2] != 0.0f) {
5478 double wi = 1.0 / r3[2];
5479 vecscale2d(ret->c, r3, wi);
5482 veccopy2d(ret->c, r3);
5485 retObj = JS_NewObject(cx, &SFVec2dClass, NULL, NULL);
5486 if (!JS_SetPrivateFw(cx, retObj, anyret)) {
5487 printf(
"JS_SetPrivate failed in X3DMatrix3d.multVecMatrix.\n");
5490 JS_SET_RVAL(cx, vp, OBJECT_TO_JSVAL(retObj));
5496X3DMatrix3Assign(JSContext* cx, uintN argc, jsval* vp) {
5497 JSObject* obj = JS_THIS_OBJECT(cx, vp);
5498 jsval* argv = JS_ARGV(cx, vp);
5500 if (!_standardMFAssign(cx, obj, argc, argv, &rval, &X3DMatrix3Class, FIELDTYPE_FreeWRLPTR)) {
return JS_FALSE; }
5501 JS_SET_RVAL(cx, vp, rval);
5507X3DMatrix3Constr(JSContext* cx, uintN argc, jsval* vp) {
5508 JSObject* obj = JS_NewObject(cx, &X3DMatrix3Class, NULL, NULL);
5509 jsval* argv = JS_ARGV(cx, vp);
5515 if ((any = (AnyNative*)AnyNativeNew(FIELDTYPE_SFMatrix3d, NULL, NULL)) == NULL) {
5516 printf(
"SFMatrix3dNativeNew failed in X3DMatrix3Constr.\n");
5520 if (!JS_SetPrivateFw(cx, obj, any)) {
5521 printf(
"JS_SetPrivate failed in SFMatrix3dConstr.\n");
5524 cc = any->v->sfmatrix3d.c;
5533 if (!JS_ValueToObject(cx, argv[0], ¶mObj)) {
5534 printf(
"JS_ValueToObject failed in SFMatrix3dConstr.\n");
5538 if (JS_IsArrayObject(cx, paramObj)) {
5544 JS_GetArrayLength(cx, paramObj, &lengthp);
5545 ncopy = lengthp > 9 ? 9 : lengthp;
5546 for (
int i = 0; i < ncopy; i++) {
5547 JS_GetElement(cx, paramObj, i, &vp);
5548 if (JS_ValueToNumber(cx, vp, &_d))
5555 if ((pptr = (AnyNative*)JS_GetPrivateFw(cx, paramObj)) == NULL) {
5556 printf(
"JS_GetPrivate failed in X3DMatrix3Constr.\n");
5559 shallow_copy_field_precision(pptr->type, FIELDTYPE_SFMatrix3d, pptr->v, (
union anyVrml*)cc);
5562 else if (argc == 9) {
5563 if (!JS_ConvertArguments(cx, argc, argv,
"d d d d d d d d d",
5564 &(pars[0]), &(pars[1]), &(pars[2]),
5565 &(pars[3]), &(pars[4]), &(pars[5]),
5566 &(pars[6]), &(pars[7]), &(pars[8])
5569 printf(
"JS_ConvertArguments failed in X3DMatrix3Constr.\n");
5572 for (
int i = 0; i < 9; i++)
5573 cc[i] = (
double)pars[i];
5575 JS_SET_RVAL(cx, vp, OBJECT_TO_JSVAL(obj));
5580X3DMatrix3AddProperty(JSContext* cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp) {
5581 JSObject* obj = *hobj.address();
5582 jsid
id = *hiid.address();
5583 jsval* vp = hvp.address();
5584 return doMFAddProperty(cx, obj,
id, vp,
"X3DMatrix3AddProperty");
5588X3DMatrix3GetProperty(JSContext* cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp) {
5589 JSObject* obj = *hobj.address();
5590 jsid iid = *hiid.address();
5591 jsval* vp = hvp.address();
5595 if (!JS_IdToValue(cx, iid, &
id)) {
5596 printf(
"JS_IdToValue failed in X3DMatrix3.GetProperty.\n");
5600 if (JSVAL_IS_INT(
id)) {
5601 index = JSVAL_TO_INT(
id);
5602 if (index > -1 && index < 3) {
5606 if ((ptr = (AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
5607 printf(
"JS_GetPrivate failed in X3DMatrix3d.multLeft.\n");
5610 cptr = &ptr->v->sfmatrix3d;
5611 double* row = &cptr->c[index * 3];
5614 if ((anyret = (AnyNative*)AnyNativeNew(FIELDTYPE_SFVec3d, NULL, NULL)) == NULL) {
5615 printf(
"SFVec4dNativeNew failed in X3DMatrix3.GetProperty.\n");
5619 anyret->type = FIELDTYPE_SFVec3d;
5620 anyret->v = (
union anyVrml*)row;
5621 JSObject* retObj = JS_NewObject(cx, &SFVec3dClass, NULL, NULL);
5622 if (!JS_SetPrivateFw(cx, retObj, anyret)) {
5623 printf(
"JS_SetPrivate failed in SFMatrix3dConstr.\n");
5626 JS_SET_RVAL(cx, vp, OBJECT_TO_JSVAL(retObj));
5631 else if (
id.isObject()) {
5638X3DMatrix3SetProperty(JSContext* cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp) {
5639 JSObject* obj = *hobj.address();
5640 jsid iid = *hiid.address();
5641 jsval* vp = hvp.address();
5646 if (!JS_IdToValue(cx, iid, &
id)) {
5647 printf(
"JS_IdToValue failed in X3DMatrix3.GetProperty.\n");
5651 if (JSVAL_IS_INT(
id)) {
5652 index = JSVAL_TO_INT(
id);
5653 if (index > -1 && index < 3) {
5656 if (!JS_ValueToNumber(cx, *vp, &rhs)) {
5657 printf(
"problems converting Javascript val to number in X3DMatrix.SetProperty\n");
5662 if ((ptr = (AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
5663 printf(
"JS_GetPrivate failed in X3DMatrix3d.multLeft.\n");
5666 cptr = &ptr->v->sfmatrix3d;
5667 double* row = &cptr->c[index * 3];
5673 else if (
id.isObject()) {