37int JS_SetPrivateFw(JSContext *cx, JSObject* obj,
void *data);
38JSObject* JS_NewGlobalObjectFw(JSContext *cx, JSClass *clasp);
39void * JS_GetPrivateFw(JSContext *cx,JSObject*_obj);
40JSObject* JS_GetParentFw(JSContext *cx, JSObject *me);
41JSObject * JS_ConstructObjectWithArgumentsFw(JSContext *cx, JSClass *clasp, JSObject *parent,
unsigned argc, jsval *argv);
42JSObject * JS_ConstructObjectFw(JSContext *cx, JSClass *clasp,
void *whatever, JSObject *parent);
43JSObject * JS_GetPrototypeFw(JSContext *cx, JSObject * obj);
44JSClass * JS_GetClassFw(JSContext *cx, JSObject * obj);
45#define STRING_SIZE 256
49#define jsuint uint32_t
51#define jsdouble double
53#define JS_FinalizeStub NULL
54#define JS_GET_CLASS JS_GetClassFw
55JSBool JS_NewNumberValue(JSContext *cx, jsdouble d, jsval *rval);
74#include "scenegraph/LinearAlgebra.h"
75#include "scenegraph/quaternion.h"
80#include "../main/ProdCon.h"
96void Parser_scanStringValueToMem_B(
union anyVrml* any, indexT ctype,
const char *value,
int isXML);
99#include "jsUtils_sm.h"
100#include "jsVRMLClasses_sm.h"
112double dMIN3(
double a,
double b,
double c) {
114 if((a<b)&&(a<c))min=a;
else if((b<a)&&(b<c))min=b;
else min=c;
return min;
117double dMAX3(
double a,
double b,
double c) {
119 if((a>b)&&(a>c))max=a;
else if((b>a)&&(b>c))max=b;
else max=c;
return max;
122void convertRGBtoHSV(
double r,
double g,
double b,
double *h,
double *s,
double *v) {
123 double my_min, my_max, delta;
125 my_min = dMIN3( r, g, b );
126 my_max = dMAX3( r, g, b );
128 delta = my_max - my_min;
138 *h = ( g - b ) / delta;
139 else if( g == my_max )
140 *h = 2 + ( b - r ) / delta;
142 *h = 4 + ( r - g ) / delta;
147void convertHSVtoRGB(
double h,
double s,
double v ,
double *r,
double *g,
double *b)
157 i = (int) floor( h );
160 q = v * ( 1 - s * f );
161 t = v * ( 1 - s * ( 1 - f ) );
163 case 0: *r = v; *g = t; *b = p;
break;
164 case 1: *r = q; *g = v; *b = p;
break;
165 case 2: *r = p; *g = v; *b = t;
break;
166 case 3: *r = p; *g = q; *b = v;
break;
167 case 4: *r = t; *g = p; *b = v;
break;
168 default: *r = v; *g = p; *b = q;
break;
174SFColorGetHSV(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
176SFColorGetHSV(JSContext *cx, uintN argc, jsval *vp) {
177 JSObject *obj = JS_THIS_OBJECT(cx,vp);
178 jsval *argv = JS_ARGV(cx,vp);
188 printf (
"SFColorGetHSV; arguments found but not expected\n");
195 if ((ptr = (AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
196 printf(
"JS_GetPrivate failed in SFColorGetHSV.\n");
199 cc = ptr->v->sfcolor.c;
203 if ((ptr = (SFColorNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
204 printf(
"JS_GetPrivate failed in SFColorGetHSV.\n");
210 convertRGBtoHSV(cc[0], cc[1], cc[2],&xp[0],&xp[1],&xp[2]);
212 #ifdef JSVRMLCLASSESVERBOSE
213 printf(
"hsv code, orig rgb is %.9g %.9g %.9g\n", (ptr->v).c[0], (ptr->v).c[1], (ptr->v).c[2]);
214 printf (
"hsv conversion is %lf %lf %lf\n",xp[0],xp[1],xp[2]);
218 result = JS_NewArrayObject(cx, 3, NULL);
219 ADD_ROOT(cx, result);
221 if (JS_NewNumberValue(cx, xp[i],&_v) == JS_FALSE) {
222 printf(
"JS_NewDouble failed for %f in SFColorGetHSV.\n", xp[i]);
225 JS_SetElement(cx, result, (jsint)i, &_v);
230 *rval = OBJECT_TO_JSVAL(result);
232 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(result));
239SFColorSetHSV(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
241SFColorSetHSV(JSContext *cx, uintN argc, jsval *vp) {
242 JSObject *obj = JS_THIS_OBJECT(cx,vp);
243 jsval *argv = JS_ARGV(cx,vp);
245 double hue, saturation, value;
246 double red,green,blue;
249 if(SM_method() == 2){
251 if ((ptr = (AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
252 printf(
"JS_GetPrivate failed in SSFColorSetHSV.\n");
255 if(ptr->valueChanged)
256 (*ptr->valueChanged) ++;
257 cc = ptr->v->sfcolor.c;
260 if ((ptr = (SFColorNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
261 printf(
"JS_GetPrivate failed in SFColorSetHSV.\n");
264 ptr->valueChanged ++;
268 if (!JS_ConvertArguments(cx, argc, argv,
"d d d", &hue, &saturation, &value)) {
269 printf(
"JS_ConvertArguments failed in SFColorSetHSV.\n");
274 #ifdef JSCLASSESVERBOSE
275 printf(
"hsv code, orig rgb is %.9g %.9g %.9g\n", (ptr->v).c[0], (ptr->v).c[1], (ptr->v).c[2]);
276 printf (
"SFColorSetHSV, have %lf %lf %lf\n",hue,saturation,value);
279 convertHSVtoRGB(hue,saturation,value, &red, &green, &blue);
281 cc[1] = (float) green;
282 cc[2] = (float) blue;
283 #ifdef JSCLASSESVERBOSE
284 printf(
"hsv code, now rgb is %.9g %.9g %.9g\n", (ptr->v).c[0], (ptr->v).c[1], (ptr->v).c[2]);
288 *rval = OBJECT_TO_JSVAL(obj);
290 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
298SFColorToString(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
300SFColorToString(JSContext *cx, uintN argc, jsval *vp) {
301 JSObject *obj = JS_THIS_OBJECT(cx,vp);
302 jsval *argv = JS_ARGV(cx,vp);
312 if ((ptr = (AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
313 printf(
"JS_GetPrivate failed in SFColorToString.\n");
316 cc = ptr->v->sfcolor.c;
319 if ((ptr = (SFColorNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
320 printf(
"JS_GetPrivate failed in SFColorToString.\n");
325 memset(_buff, 0, STRING);
326 sprintf(_buff,
"%.9g %.9g %.9g",
327 cc[0], cc[1], cc[2]);
328 _str = JS_NewStringCopyZ(cx, _buff);
330 *rval = STRING_TO_JSVAL(_str);
332 JS_SET_RVAL(cx,vp,STRING_TO_JSVAL(_str));
339SFColorAssign(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
341SFColorAssign(JSContext *cx, uintN argc, jsval *vp) {
342 JSObject *obj = JS_THIS_OBJECT(cx,vp);
343 jsval *argv = JS_ARGV(cx,vp);
351 if(SM_method() == 2){
352 AnyNative *lhs, *rhs;
353 if ((lhs = (AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
354 printf(
"JS_GetPrivate failed for obj in SFColorAssign.\n");
358 if (!(*vp).isObject())
360 if ((rhs = (AnyNative *)JS_GetPrivateFw(cx, JSVAL_TO_OBJECT(*vp))) == NULL) {
361 printf(
"JS_ConvertArguments failed in SFColorAssign. \n");
364 AnyNativeAssign(lhs,rhs);
366 SFColorNative *ptr, *fptr;
367 if ((ptr = (SFColorNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
368 printf(
"JS_GetPrivate failed for obj in SFColorAssign.\n");
373 CHECK_CLASS(cx,obj,argv,__FUNCTION__,SFColorClass)
376 if (!JS_ConvertArguments(cx, argc, argv,
"o s", &_from_obj, &_id_str)) {
378 if (JS_ConvertArguments(cx, argc, argv,
"oS", &_from_obj, &_id_jsstr) == JS_TRUE) {
379 _id_str = JS_EncodeString(cx,_id_jsstr);
382 printf(
"JS_ConvertArguments failed in SFColorAssign.\n");
386 CHECK_CLASS(cx,_from_obj,argv,__FUNCTION__,SFColorClass)
388 if ((fptr = (SFColorNative *)JS_GetPrivateFw(cx, _from_obj)) == NULL) {
389 printf(
"JS_GetPrivate failed for _from_obj in SFColorAssign.\n");
392 #ifdef JSVRMLCLASSESVERBOSE
393 printf(
"SFColorAssign: obj = %p, id = \"%s\", from = %p\n", obj, _id_str, _from_obj);
396 SFColorNativeAssign(ptr, fptr);
399 *rval = OBJECT_TO_JSVAL(obj);
401 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
409SFColorConstr(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
411SFColorConstr(JSContext *cx, uintN argc, jsval *vp) {
412 JSObject *obj = JS_NewObject(cx,&SFColorClass,NULL,NULL);
413 jsval *argv = JS_ARGV(cx,vp);
419 if(SM_method() == 2){
421 if((any = (AnyNative*)AnyNativeNew(FIELDTYPE_SFColor,NULL,NULL)) == NULL){
422 printf(
"AnyfNativeNew failed in SFColorConstr.\n");
425 if (!JS_SetPrivateFw(cx, obj, any)) {
426 printf(
"JS_SetPrivate failed in SFColorConstr.\n");
429 cc = any->v->sfvec3f.c;
433 if ((ptr = (SFColorNative *) SFColorNativeNew()) == NULL) {
434 printf(
"SFColorNativeNew failed in SFColorConstr.\n");
443 if (!JS_SetPrivateFw(cx, obj, ptr)) {
444 printf(
"JS_SetPrivate failed in SFColorConstr.\n");
448 ptr->valueChanged = 1;
454 }
else if (JS_ConvertArguments(cx, argc, argv,
"d d d", &(pars[0]), &(pars[1]), &(pars[2]))) {
455 cc[0] = (float) pars[0];
456 cc[1] = (float) pars[1];
457 cc[2] = (float) pars[2];
459 printf(
"Invalid arguments for SFColorConstr.\n");
462 #ifdef JSVRMLCLASSESVERBOSE
463 printf(
"SFColorConstr: obj = %p args = %d, %f %f %f\n",
465 cc[0], cc[1], cc[2]);
470 *rval = OBJECT_TO_JSVAL(obj);
472 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
481SFColorGetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp){
482#elif JS_VERSION == 185
483SFColorGetProperty(JSContext *cx, JSObject *obj, jsid iid, jsval *vp){
485SFColorGetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp){
486 JSObject *obj = *hobj.address();
487 jsid iid = *hiid.address();
488 jsval *vp = hvp.address();
497 if (!JS_IdToValue(cx,iid,&
id)) {
498 printf(
"JS_IdToValue failed in SFColorGetProperty.\n");
504 if ((any = (AnyNative *)JS_GetPrivateFw(cx,obj)) == NULL) {
505 printf(
"JS_GetPrivate failed in SFColorGetProperty.\n");
508 cc = any->v->sfcolor.c;
512 if ((ptr = (SFColorNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
513 printf(
"JS_GetPrivate failed in SFColorGetProperty.\n");
518 if (JSVAL_IS_INT(
id)) {
519 switch (JSVAL_TO_INT(
id)) {
522 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
524 "JS_NewDouble failed for %f in SFColorGetProperty.\n",
531 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
533 "JS_NewDouble failed for %f in SFColorGetProperty.\n",
540 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
542 "JS_NewDouble failed for %f in SFColorGetProperty.\n",
554SFColorSetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp){
555#elif JS_VERSION == 185
556SFColorSetProperty(JSContext *cx, JSObject *obj, jsid iid, JSBool strict, jsval *vp){
558SFColorSetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp){
559 JSObject *obj = *hobj.address();
560 jsid iid = *hiid.address();
561 jsval *vp = hvp.address();
569 if (!JS_IdToValue(cx,iid,&
id)) {
570 printf(
"JS_IdToValue failed in SFColorSetProperty.\n");
574 if(SM_method() == 2){
576 if ((any = (AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
577 printf(
"JS_GetPrivate failed in SFColorSetProperty.\n");
580 if(any->valueChanged)
581 (*any->valueChanged)++;
582 cc = any->v->sfcolor.c;
586 if ((ptr = (SFColorNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
587 printf(
"JS_GetPrivate failed in SFColorSetProperty.\n");
591 #ifdef JSVRMLCLASSESVERBOSE
592 printf(
"SFColorSetProperty: obj = %p, id = %d, valueChanged = %d\n",
593 obj, JSVAL_TO_INT(
id), ptr->valueChanged);
597 if (!JS_ConvertValue(cx, *vp, JSTYPE_NUMBER, &_val)) {
598 printf(
"JS_ConvertValue failed in SFColorSetProperty.\n");
602 if (JSVAL_IS_INT(
id)) {
603 switch (JSVAL_TO_INT(
id)) {
606 cc[0] = (float) *JSVAL_TO_DOUBLE(_val);
608 cc[0] = (float) JSVAL_TO_DOUBLE(_val);
613 cc[1] = (float) *JSVAL_TO_DOUBLE(_val);
615 cc[1] = (float) JSVAL_TO_DOUBLE(_val);
620 cc[2] = (float) *JSVAL_TO_DOUBLE(_val);
622 cc[2] = (float) JSVAL_TO_DOUBLE(_val);
634SFColorRGBAGetHSV(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
636SFColorRGBAGetHSV(JSContext *cx, uintN argc, jsval *vp) {
637 JSObject *obj = JS_THIS_OBJECT(cx,vp);
638 jsval *argv = JS_ARGV(cx,vp);
643 jsdouble hue = 0, saturation = 0, value = 0;
651 if ((_arrayObj = JS_NewArrayObject(cx, 0, NULL)) == NULL) {
652 printf(
"JS_NewArrayObject failed in SFColorRGBAGetHSV.\n");
657 JS_NewNumberValue(cx,hue,&_v);
658 if (!JS_SetElement(cx, _arrayObj, 0, &_v)) {
659 printf(
"JS_SetElement failed for hue in SFColorRGBAGetHSV.\n");
662 JS_NewNumberValue(cx,saturation,&_v);
663 if (!JS_SetElement(cx, _arrayObj, 1, &_v)) {
664 printf(
"JS_SetElement failed for saturation in SFColorRGBAGetHSV.\n");
667 JS_NewNumberValue(cx,value,&_v);
668 if (!JS_SetElement(cx, _arrayObj, 2, &_v)) {
669 printf(
"JS_SetElement failed for value in SFColorRGBAGetHSV.\n");
673 *rval = OBJECT_TO_JSVAL(_arrayObj);
675 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(_arrayObj));
684SFColorRGBASetHSV(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
686SFColorRGBASetHSV(JSContext *cx, uintN argc, jsval *vp) {
687 JSObject *obj = JS_THIS_OBJECT(cx,vp);
688 jsval *argv = JS_ARGV(cx,vp);
691 jsdouble hue, saturation, value;
696 if ((ptr = (AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
697 printf(
"JS_GetPrivate failed in SFColorRGBAToString.\n");
700 cc = ptr->v->sfcolorrgba.c;
702 SFColorRGBANative *ptr;
703 if ((ptr = (SFColorRGBANative *)JS_GetPrivateFw(cx, obj)) == NULL) {
704 printf(
"JS_GetPrivate failed in SFColorRGBAToString.\n");
709 if (!JS_ConvertArguments(cx, argc, argv,
"d d d",
710 &hue, &saturation, &value)) {
711 printf(
"JS_ConvertArguments failed in SFColorRGBASetHSV.\n");
718 *rval = OBJECT_TO_JSVAL(obj);
720 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
728SFColorRGBAToString(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
730SFColorRGBAToString(JSContext *cx, uintN argc, jsval *vp) {
731 JSObject *obj = JS_THIS_OBJECT(cx,vp);
732 jsval *argv = JS_ARGV(cx,vp);
743 if ((ptr = (AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
744 printf(
"JS_GetPrivate failed in SFColorRGBAToString.\n");
747 cc = ptr->v->sfcolorrgba.c;
750 SFColorRGBANative *ptr;
751 if ((ptr = (SFColorRGBANative *)JS_GetPrivateFw(cx, obj)) == NULL) {
752 printf(
"JS_GetPrivate failed in SFColorRGBAToString.\n");
757 memset(_buff, 0, STRING);
758 sprintf(_buff,
"%.9g %.9g %.9g %.9g",
759 cc[0], cc[1], cc[2],cc[3]);
760 _str = JS_NewStringCopyZ(cx, _buff);
763 *rval = STRING_TO_JSVAL(_str);
765 JS_SET_RVAL(cx,vp,STRING_TO_JSVAL(_str));
773SFColorRGBAAssign(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
775SFColorRGBAAssign(JSContext *cx, uintN argc, jsval *vp) {
776 JSObject *obj = JS_THIS_OBJECT(cx,vp);
777 jsval *argv = JS_ARGV(cx,vp);
785 if(SM_method() == 2){
786 AnyNative *lhs, *rhs;
787 if ((lhs = (AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
788 printf(
"JS_GetPrivate failed for obj in SFColorRGBAAssign.\n");
792 if (!(*vp).isObject())
794 if ((rhs = (AnyNative *)JS_GetPrivateFw(cx, JSVAL_TO_OBJECT(*vp))) == NULL) {
795 printf(
"JS_ConvertArguments failed in SFColorRGBAAssign. \n");
798 AnyNativeAssign(lhs,rhs);
800 SFColorRGBANative *ptr, *fptr;
803 if ((ptr = (SFColorRGBANative *)JS_GetPrivateFw(cx, obj)) == NULL) {
804 printf(
"JS_GetPrivate failed for obj in SFColorRGBAAssign.\n");
808 CHECK_CLASS(cx,obj,argv,__FUNCTION__,SFColorRGBAClass)
811 if (!JS_ConvertArguments(cx, argc, argv,
"o s", &_from_obj, &_id_str)) {
813 if (JS_ConvertArguments(cx, argc, argv,
"oS", &_from_obj, &_id_jsstr) == JS_TRUE) {
814 _id_str = JS_EncodeString(cx,_id_jsstr);
817 printf(
"JS_ConvertArguments failed in SFColorRGBAAssign.\n");
821 CHECK_CLASS(cx,_from_obj,argv,__FUNCTION__,SFColorRGBAClass)
823 if ((fptr = (SFColorRGBANative *)JS_GetPrivateFw(cx, _from_obj)) == NULL) {
824 printf(
"JS_GetPrivate failed for _from_obj in SFColorRGBAAssign.\n");
827 #ifdef JSVRMLCLASSESVERBOSE
828 printf(
"SFColorRGBAAssign: obj = %p, id = \"%s\", from = %p\n",
829 obj, _id_str, _from_obj);
832 SFColorRGBANativeAssign(ptr, fptr);
835 *rval = OBJECT_TO_JSVAL(obj);
837 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
845SFColorRGBAConstr(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
847SFColorRGBAConstr(JSContext *cx, uintN argc, jsval *vp) {
848 JSObject *obj = JS_NewObject(cx,&SFColorRGBAClass,NULL,NULL);
849 jsval *argv = JS_ARGV(cx,vp);
855 if(SM_method() == 2){
857 if((any = (AnyNative*)AnyNativeNew(FIELDTYPE_SFColorRGBA,NULL,NULL)) == NULL){
858 printf(
"AnyfNativeNew failed in SFColorRGBAConstr.\n");
861 if (!JS_SetPrivateFw(cx, obj, any)) {
862 printf(
"JS_SetPrivate failed in SFColorRGBAConstr.\n");
865 cc = any->v->sfvec4f.c;
867 SFColorRGBANative *ptr;
869 if ((ptr = (SFColorRGBANative *) SFColorNativeNew()) == NULL) {
870 printf(
"SFColorRGBANativeNew failed in SFColorConstr.\n");
879 if (!JS_SetPrivateFw(cx, obj, ptr)) {
880 printf(
"JS_SetPrivate failed in SFColorRGBAConstr.\n");
884 ptr->valueChanged = 1;
892 }
else if (JS_ConvertArguments(cx, argc, argv,
"d d d d",
893 &(pars[0]), &(pars[1]), &(pars[2]), &(pars[3]))) {
894 cc[0] = (float) pars[0];
895 cc[1] = (float) pars[1];
896 cc[2] = (float) pars[2];
897 cc[3] = (float) pars[3];
899 printf(
"Invalid arguments for SFColorRGBAConstr.\n");
905 #ifdef JSVRMLCLASSESVERBOSE
906 printf(
"SFColorRGBAConstr: obj = %p %u args, %f %f %f %f\n",
908 cc[0], cc[1], cc[2],cc[3]);
911 *rval = OBJECT_TO_JSVAL(obj);
913 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
921SFColorRGBAGetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp){
922#elif JS_VERSION == 185
923SFColorRGBAGetProperty(JSContext *cx, JSObject *obj, jsid iid, jsval *vp){
926SFColorRGBAGetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp){
927 JSObject *obj = *hobj.address();
928 jsid iid = *hiid.address();
929 jsval *vp = hvp.address();
938 if (!JS_IdToValue(cx,iid,&
id)) {
939 printf(
"JS_IdToValue failed in SFColorRGBAGetProperty.\n");
946 if ((any = (AnyNative *)JS_GetPrivateFw(cx,obj)) == NULL) {
947 printf(
"JS_GetPrivate failed in SFColorRGBAGetProperty.\n");
950 cc = any->v->sfcolorrgba.c;
952 SFColorRGBANative *ptr;
953 if ((ptr = (SFColorRGBANative *)JS_GetPrivateFw(cx, obj)) == NULL) {
954 printf(
"JS_GetPrivate failed in SFColorRGBAGetProperty.\n");
959 if (JSVAL_IS_INT(
id)) {
961 switch (JSVAL_TO_INT(
id)) {
964 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
966 "JS_NewDouble failed for %f in SFColorRGBAGetProperty.\n",
973 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
975 "JS_NewDouble failed for %f in SFColorRGBAGetProperty.\n",
982 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
984 "JS_NewDouble failed for %f in SFColorRGBAGetProperty.\n",
991 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
993 "JS_NewDouble failed for %f in SFColorRGBAGetProperty.\n",
1005SFColorRGBASetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp){
1006#elif JS_VERSION == 185
1007SFColorRGBASetProperty(JSContext *cx, JSObject *obj, jsid iid, JSBool strict, jsval *vp){
1009SFColorRGBASetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp){
1010 JSObject *obj = *hobj.address();
1011 jsid iid = *hiid.address();
1012 jsval *vp = hvp.address();
1018#if JS_VERSION >= 185
1020 if (!JS_IdToValue(cx,iid,&
id)) {
1021 printf(
"JS_IdToValue failed in SFColorRGBASetProperty.\n");
1025 if(SM_method() == 2){
1027 if ((any = (AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
1028 printf(
"JS_GetPrivate failed in SFColorRGBASetProperty.\n");
1031 if(any->valueChanged)
1032 (*any->valueChanged)++;
1033 cc = any->v->sfcolorrgba.c;
1035 SFColorRGBANative *ptr;
1037 if ((ptr = (SFColorRGBANative *)JS_GetPrivateFw(cx, obj)) == NULL) {
1038 printf(
"JS_GetPrivate failed in SFColorRGBASetProperty.\n");
1041 ptr->valueChanged++;
1042 #ifdef JSVRMLCLASSESVERBOSE
1043 printf(
"SFColorRGBASetProperty: obj = %p, id = %d, valueChanged = %d\n",
1044 obj, JSVAL_TO_INT(
id), ptr->valueChanged);
1048 if (!JS_ConvertValue(cx, *vp, JSTYPE_NUMBER, &_val)) {
1049 printf(
"JS_ConvertValue failed in SFColorRGBASetProperty.\n");
1053 if (JSVAL_IS_INT(
id)) {
1054 switch (JSVAL_TO_INT(
id)) {
1057 cc[0] = (float) *JSVAL_TO_DOUBLE(_val);
1059 cc[0] = (float) JSVAL_TO_DOUBLE(_val);
1064 cc[1] = (float) *JSVAL_TO_DOUBLE(_val);
1066 cc[1] = (float) JSVAL_TO_DOUBLE(_val);
1071 cc[2] = (float) *JSVAL_TO_DOUBLE(_val);
1073 cc[2] = (float) JSVAL_TO_DOUBLE(_val);
1078 cc[3] = (float) *JSVAL_TO_DOUBLE(_val);
1080 cc[3] = (float) JSVAL_TO_DOUBLE(_val);
1091SFImageToString(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
1093SFImageToString(JSContext *cx, uintN argc, jsval *vp) {
1094 JSObject *obj = JS_THIS_OBJECT(cx,vp);
1095 jsval *argv = JS_ARGV(cx,vp);
1102 #ifdef JSVRMLCLASSESVERBOSE
1103 printf(
"SFImageToString: obj = %p, %u args\n", obj, argc);
1110 return doMFToString(cx, obj,
"SFImage", rval);
1112 if (SM_method() == 2) {
1114 if ((ptr = (AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
1115 printf(
"JS_GetPrivate failed in SFVec3fToString.\n");
1118 int *cc = ptr->v->sfimage.arr.p;
1119 int nn = ptr->v->sfimage.arr.n;
1120 int* whc = ptr->v->sfimage.whc;
1121 memset(buff, 0, STRING);
1122 sprintf(buff,
"%d %d %d ",
1123 whc[0], whc[1], whc[2]);
1125 for (
int i = 0; i < nn; i++) {
1126 sprintf(sbuf,
"%#x ", cc[i]);
1129 _str = JS_NewStringCopyZ(cx, buff);
1131 JS_SET_RVAL(cx, vp, STRING_TO_JSVAL(_str));
1135 retval = doMFToString(cx, obj,
"SFImage", &rval);
1136 JS_SET_RVAL(cx, vp, rval);
1144SFImageAssign(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
1146SFImageAssign(JSContext *cx, uintN argc, jsval *vp) {
1147 JSObject *obj = JS_THIS_OBJECT(cx,vp);
1148 jsval *argv = JS_ARGV(cx,vp);
1153 #ifdef JSVRMLCLASSESVERBOSE
1154 printf(
"SFImageAssign: obj = %p, %u args\n", obj, argc);
1158 return _standardMFAssign (cx, obj, argc, argv, rval, &SFImageClass,FIELDTYPE_SFImage);
1160 retval = _standardMFAssign (cx, obj, argc, argv, &rval, &SFImageClass,FIELDTYPE_SFImage);
1161 JS_SET_RVAL(cx,vp,rval);
1168SFImageConstr(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
1170SFImageConstr(JSContext *cx, uintN argc, jsval *vp) {
1171 JSObject *obj = JS_NewObject(cx,&SFImageClass,NULL,NULL);
1172 jsval *argv = JS_ARGV(cx,vp);
1184 #ifdef JSVRMLCLASSESVERBOSE
1185 printf(
"SFImageConstr: obj = %p, %u args\n", obj, argc);
1191 if ((ptr = (AnyNative *) AnyNativeNew(FIELDTYPE_SFImage,NULL,NULL)) == NULL) {
1192 printf(
"SFImageNativeNew failed in SFImageConstr.\n");
1196 if (!JS_SetPrivateFw(cx, obj, ptr)) {
1197 printf(
"JS_SetPrivate failed in SFImageConstr.\n");
1207 if ((ptr = (SFImageNative *) SFImageNativeNew()) == NULL) {
1208 printf(
"SFImageNativeNew failed in SFImageConstr.\n");
1212 if (!JS_SetPrivateFw(cx, obj, ptr)) {
1213 printf(
"JS_SetPrivate failed in SFImageConstr.\n");
1217 ptr->valueChanged = 1;
1228 if (SM_method() == 2) {
1229 anyv->sfimage.arr.n = 0;
1230 anyv->sfimage.arr.p = NULL;
1231 anyv->sfimage.whc[0] = anyv->sfimage.whc[1] = anyv->sfimage.whc[2] = 0;
1233 mv = INT_TO_JSVAL(0);
1234 for (i = 0; i < 4; i++) {
1237 MFInt32Constr(cx, obj, 0, NULL, &mv);
1247 MFInt32ConstrInternals(cx, obj, 0, NULL, &mv);
1250 if (!JS_DefineElement(cx, obj, (jsuint)i, mv, JS_GET_PROPERTY_STUB, JS_SET_PROPERTY_STUB6, JSPROP_ENUMERATE)) {
1251 printf(
"JS_DefineElement failed for arg %d in SFImageConstr.\n", i);
1255 DEFINE_LENGTH(cx, obj, 4)
1257#if JS_VERSION >= 185
1259 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
1265 if ((argc != 4) && (argc != 3)) {
1266 printf (
"SFImageConstr, expect 4 parameters, got %d\n",argc);
1274 for (i=0; i<3; i++) {
1276 if (JSVAL_IS_INT(argv[i])) {
1279 JS_ValueToInt32(cx, argv[i], ¶m[i]);
1282 printf (
"SFImageConstr: parameter %d is not a number\n",i);
1287 expectedSize = param[0] * param[1];
1291 if ((param[2]<0) || (param[2]>4)) {
1293 printf (
"SFImageConstr: with size > 0, comp must be between 1 and 4 inclusive, got %d\n",param[2]);
1298 if ((expectedSize == 0) && (param[2] != 0)) {
1299 printf (
"SFImageConstr: with x and y equal to zero, comp must be zero\n");
1303 if ((expectedSize != 0) && (param[2] == 0)) {
1304 printf (
"SFImageConstr: with x and y not zero, comp must be non-zero\n");
1310 if (argc == 4 && SM_method() != 2) {
1311 #ifdef JSVRMLCLASSESVERBOSE
1312 printJSNodeType(cx,JSVAL_TO_OBJECT(argv[3]));
1314 CHECK_CLASS(cx, JSVAL_TO_OBJECT(argv[3]), NULL, __FUNCTION__, MFInt32Class)
1315 if (!JS_GetProperty(cx, JSVAL_TO_OBJECT(argv[3]), MF_LENGTH_FIELD, &mv)) {
1316 printf(
"JS_GetProperty failed for MFInt32 length in SFImageConstr\n");
1319 if (expectedSize != JSVAL_TO_INT(mv)) {
1320 printf(
"SFImageConstr: warning expected %d elements in image data, got %d\n", expectedSize, JSVAL_TO_INT(mv));
1326 if (SM_method() == 2) {
1332 if ((ptr = (AnyNative*)JS_GetPrivateFw(cx, JSVAL_TO_OBJECT(argv[3]))) == NULL) {
1333 printf(
"JS_GetPrivate failed in SFImageConstr get MFInt32.\n");
1336 cc = ptr->v->mfint32.p;
1337 nn = ptr->v->mfint32.n;
1340 newsize =
sizeof(int) * upper_power_of_two(expectedSize);
1341 anyv->sfimage.arr.p = MALLOC(
int*, newsize);
1342 memset(anyv->sfimage.arr.p, 0, newsize);
1343 anyv->sfimage.arr.n = expectedSize;
1344 anyv->sfimage.whc[0] = param[0];
1345 anyv->sfimage.whc[1] = param[1];
1346 anyv->sfimage.whc[2] = param[2];
1347 int ncopy = expectedSize > nn ? nn : expectedSize;
1348 for (i = 0; i < ncopy; i++) {
1349 anyv->sfimage.arr.p[i] = cc[i];
1353 for (i = 0; i < argc; i++) {
1354 if (!JS_DefineElement(cx, obj, (jsint)i, argv[i], JS_GET_PROPERTY_STUB, JS_SET_PROPERTY_STUB6, JSPROP_ENUMERATE)) {
1355 printf(
"JS_DefineElement failed for arg %d in SFImageConstr.\n", i);
1363 *rval = OBJECT_TO_JSVAL(obj);
1365 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
1371SFImageAddProperty(JSContext *cx, JSObject *obj, jsid
id, jsval *vp) {
1372 return doMFAddProperty(cx, obj,
id, vp,
"SFImage");
1376JSBool SFImageGetProperty(JSContext *cx, JSObject *obj, jsid
id, jsval *vp) {
1378JSBool SFImageGetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp){
1379 JSObject *obj = *hobj.address();
1380 jsid iid = *hiid.address();
1381 jsval *vp = hvp.address();
1385 if (!JS_IdToValue(cx, iid, &
id)) {
1386 printf(
"JS_IdToValue failed in SFVec3fGetProperty.\n");
1390 if (SM_method() == 2) {
1392 if ((any = (AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
1393 printf(
"JS_GetPrivate failed in SFImageGetProperty.\n");
1396 cc = any->v->sfimage.arr.p;
1397 nn = any->v->sfimage.arr.n;
1398 whc = any->v->sfimage.whc;
1408 if (JSVAL_IS_INT(
id)) {
1410 switch (JSVAL_TO_INT(
id)) {
1413 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
1414 printf(
"JS_NewNumberValue failed for %d in SFImageGetProperty.\n", d);
1420 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
1421 printf(
"JS_NewNumberValue failed for %d in SFImageGetProperty.\n", d);
1427 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
1428 printf(
"JS_NewNumberValue failed for %d in SFImageGetProperty.\n",d);
1433 JSObject * obj2 = JS_NewObject(cx, &MFInt32Class, NULL, NULL);
1436 if ((ptr = (AnyNative*)AnyNativeNew(FIELDTYPE_MFInt32, NULL, NULL)) == NULL) {
1437 printf(
"MFInt32NativeNew failed in SFImageGetter.\n");
1440 if (!JS_SetPrivateFw(cx, obj2, ptr)) {
1441 printf(
"JS_SetPrivate failed in SFImageGetter.\n");
1444 ptr->v->mfint32.n = nn;
1445 ptr->v->mfint32.p = cc;
1447 JS_SET_RVAL(cx, vp, OBJECT_TO_JSVAL(obj2));
1454#ifdef JSVRMLCLASSESVERBOSE
1455 printf(
"SFVec3fGetProperty, id is NOT an int...\n");
1465SFImageSetProperty(JSContext *cx, JSObject *obj, jsid
id, jsval *vp) {
1466#elif JS_VERSION == 185
1467SFImageSetProperty(JSContext *cx, JSObject *obj, jsid
id, JSBool strict, jsval *vp){
1469SFImageSetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp){
1470 JSObject *obj = *hobj.address();
1471 jsid
id = *hiid.address();
1472 jsval *vp = hvp.address();
1474 return doMFSetProperty(cx, obj,
id, vp, FIELDTYPE_SFImage);
1483SFNodeValueOf(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
1485SFNodeValueOf(JSContext *cx, uintN argc, jsval *vp) {
1486 JSObject *obj = JS_THIS_OBJECT(cx,vp);
1487 jsval *argv = JS_ARGV(cx,vp);
1489 jsval *rval = &rvalinst;
1496 if(SM_method() == 2){
1498 if ((nany = (AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
1499 printf(
"JS_GetPrivate failed in SFNodeToString.\n");
1502 handle = nany->v->sfnode;
1504 #ifdef JSVRMLCLASSESVERBOSE
1505 printf (
"SFNODETOSTRING\n");
1507 if ((ptr = (SFNodeNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
1508 printf(
"JS_GetPrivate failed in SFNodeToString.\n");
1511 handle = ptr->handle;
1525 sprintf (tmpline,
"%p",handle);
1530 nv = strtod(tmpline,NULL);
1534 if (!JS_NewNumberValue(cx, nv, rval)) {
1535 ConsoleMessage (
"Conversion issue in SFNodeToString");
1540 #ifdef JSVRMLCLASSESVERBOSE
1541 printf (
"SFNodeToString, handle %p ",ptr->handle);
1542 printf (
"SFNodeToString, handle as unsignned %u ",(
unsigned int)ptr->handle);
1543 if (ptr->handle != NULL) {
1544 printf (
" (%s) ", stringNodeType (((
struct X3D_Node *)ptr->handle)->_nodeType));
1546 printf (
"string \"%s\"\n",ptr->X3DString);
1549#if JS_VERSION >= 185
1550 JS_SET_RVAL(cx,vp,*rval);
1557SFNodeToString(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
1559SFNodeToString(JSContext *cx, uintN argc, jsval *vp) {
1560 JSObject *obj = JS_THIS_OBJECT(cx,vp);
1561 jsval *argv = JS_ARGV(cx,vp);
1563 jsval *rval = &rvalinst;
1571 #ifdef JSVRMLCLASSESVERBOSE
1572 printf (
"SFNODETOSTRING\n");
1574 if(SM_method() == 2){
1576 if ((nany = (AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
1577 printf(
"JS_GetPrivate failed in SFNodeToString.\n");
1580 handle = nany->v->sfnode;
1583 if ((ptr = (SFNodeNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
1584 printf(
"JS_GetPrivate failed in SFNodeToString.\n");
1587 handle = ptr->handle;
1602 memset(buff, 0, STRING);
1603 sprintf (buff,
"_%p_",handle);
1608 _str = JS_NewStringCopyZ(cx, buff);
1611 *rval = STRING_TO_JSVAL(_str);
1613 JS_SET_RVAL(cx,vp,STRING_TO_JSVAL(_str));
1616 REMOVE_ROOT (cx,_str)
1627SFNodeAssign(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
1629SFNodeAssign(JSContext *cx, uintN argc, jsval *vp) {
1630 JSObject *obj = JS_THIS_OBJECT(cx,vp);
1631 jsval *argv = JS_ARGV(cx,vp);
1632 JSString *_id_jsstr;
1635 JSObject *_from_obj;
1636 SFNodeNative *fptr, *ptr;
1640 if(SM_method() == 2){
1641 AnyNative *lhs, *rhs;
1643 if ((*vp).isObject()){
1644 if ((rhs = (AnyNative *)JS_GetPrivateFw(cx, JSVAL_TO_OBJECT(*vp))) != NULL) {
1645 if ((lhs = (AnyNative *)JS_GetPrivateFw(cx, obj)) != NULL) {
1646 AnyNativeAssign(lhs,rhs);
1654 #ifdef JSVRMLCLASSESVERBOSE
1655 printf (
"start of SFNodeAssign argc %d\n",argc);
1659 CHECK_CLASS(cx,obj,argv,__FUNCTION__,SFNodeClass)
1662 if ((ptr = (SFNodeNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
1663 printf(
"JS_GetPrivate failed for obj in SFNodeAssign.\n");
1668 #ifdef JSVRMLCLASSESVERBOSE
1669 printf (
"SFNodeAssign, we have %d and %d\n",(
int)argv[0], (
int)argv[1]);
1673 if (!JS_ConvertArguments(cx, argc, argv,
"o s", &_from_obj, &_id_str)) {
1675 if (JS_ConvertArguments(cx, argc, argv,
"oS", &_from_obj, &_id_jsstr) == JS_TRUE) {
1676 _id_str = JS_EncodeString(cx,_id_jsstr);
1679 printf(
"JS_ConvertArguments failed in SFNodeAssign.\n");
1682 if (_from_obj != NULL) {
1683 CHECK_CLASS(cx,_from_obj,argv,__FUNCTION__,SFNodeClass)
1685 if ((fptr = (SFNodeNative *)JS_GetPrivateFw(cx, _from_obj)) == NULL) {
1686 printf(
"JS_GetPrivate failed for _from_obj in SFNodeAssign.\n");
1689 #ifdef JSVRMLCLASSESVERBOSE
1690 printf(
"SFNodeAssign: obj = %p, id = \"%s\", from = %p\n",
1691 obj, _id_str, _from_obj);
1693 }
else { fptr = NULL; }
1696 if (!SFNodeNativeAssign(ptr, fptr)) {
1697 printf(
"SFNodeNativeAssign failed in SFNodeAssign.\n");
1702 *rval = OBJECT_TO_JSVAL(obj);
1704 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
1707 #ifdef JSVRMLCLASSESVERBOSE
1708 printf (
"end of SFNodeAssign\n");
1718SFNodeEquals(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
1720 jsval *rval = &rvalinst;
1722SFNodeEquals(JSContext *cx, uintN argc, jsval *vp) {
1723 JSObject *obj = JS_THIS_OBJECT(cx,vp);
1724 jsval *argv = JS_ARGV(cx,vp);
1727 JSObject *_from_obj;
1728 SFNodeNative *ptr, *fptr;
1730 if(SM_method() == 2){
1731 AnyNative *lhs, *rhs;
1734 if ((*vp).isObject()) {
1735 if ((rhs = (AnyNative *)JS_GetPrivateFw(cx, JSVAL_TO_OBJECT(*vp))) != NULL) {
1736 if ((lhs = (AnyNative *)JS_GetPrivateFw(cx, obj)) != NULL) {
1737 iret = lhs->v->sfnode == rhs->v->sfnode ? 1 : 0;
1745 if ((ptr = (SFNodeNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
1746 printf(
"JS_GetPrivate failed in SFNodeNative.\n");
1749 if (!JS_ConvertArguments(cx, argc, argv,
"o",
1751 printf(
"JS_ConvertArguments failed in SFNodeNative.\n");
1756 if (_from_obj != NULL) {
1757 CHECK_CLASS(cx,_from_obj,argv,__FUNCTION__,SFNodeClass)
1759 if ((fptr = (SFNodeNative *)JS_GetPrivateFw(cx, _from_obj)) == NULL) {
1760 printf(
"JS_GetPrivate failed for _from_obj in SFNodeAssign.\n");
1763 #ifdef JSVRMLCLASSESVERBOSE
1764 printf(
"SFNodeAssign: obj = %p, id = \"%s\", from = %p\n",
1765 obj, _id_str, _from_obj);
1767 }
else { fptr = NULL; }
1771 iret = SFNodeNativeEquals(ptr, fptr);
1774 *rval = BOOLEAN_TO_JSVAL(iret);
1776 JS_SET_RVAL(cx,vp,BOOLEAN_TO_JSVAL(iret));
1779 #ifdef JSVRMLCLASSESVERBOSE
1780 printf (
"end of SFNodeEqual\n");
1792SFNodeConstr(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
1794SFNodeConstr(JSContext *cx, uintN argc, jsval *vp) {
1795 JSObject *obj = JS_NewObject(cx,&SFNodeClass,NULL,NULL);
1796 jsval *argv = JS_ARGV(cx,vp);
1825 SFNodeNative *newPtr;
1826 SFNodeNative *oldPtr;
1838 #ifdef JSVRMLCLASSESVERBOSE
1839 printf (
"Start of SFNodeConstr argc %d object %p\n",argc,obj);
1845 cString = STRDUP(
"SFNodeConstr from argc eq 0");
1846 }
else if (argc == 1) {
1848 myStr = JS_ValueToString(cx, argv[0]);
1850 cString = JS_GetStringBytes(myStr);
1852 cString = JS_EncodeString(cx,myStr);
1854 #ifdef JSVRMLCLASSESVERBOSE
1855 printf (
"SFNodeConstr, argc =1l string %s\n",cString);
1860 if (argv[0].isObject()) {
1862 #ifdef JSVRMLCLASSESVERBOSE
1863 printf (
"SFNodeConstr, cstring was an object\n");
1865 if(SM_method() == 2){
1867 if ((rhs = (AnyNative *)JS_GetPrivateFw(cx, JSVAL_TO_OBJECT(argv[0]))) == NULL) {
1868 #ifdef JSVRMLCLASSESVERBOSE
1869 printf(
"JS_GetPrivate failed in SFNodeConstr.\n");
1874 newHandle = rhs->v->sfnode;
1877 if ((oldPtr = (SFNodeNative *)JS_GetPrivateFw(cx, JSVAL_TO_OBJECT(argv[0]))) == NULL) {
1878 #ifdef JSVRMLCLASSESVERBOSE
1879 printf(
"JS_GetPrivate failed in SFNodeConstr.\n");
1884 newHandle = oldPtr->handle;
1886 if(SM_method() == 0)
1887 cString = STRDUP(oldPtr->X3DString);
1890 #ifdef JSVRMLCLASSESVERBOSE
1891 printf (
"SFNodeConstr, cstring was NOT an object\n");
1895 if (!((cString[0] >=
'A' && cString [0] <=
'Z')||(cString[0] >=
'a' && cString [0] <=
'z'))) {
1897 if (sscanf (cString,
"%p",&newHandle) != 1) {
1898 ConsoleMessage (
"expected pointer for Javascript SFNode constr, got :%s:",cString);
1900 #ifdef JSVRMLCLASSESVERBOSE
1901 printf (
"SFNodeConstr, expected pointer for Javascript SFNode constr, got :%s:\n",cString);
1903 printf (
"SFNodeConstr, got pointer for Javascript SFNode constr, :%p:\n",newHandle);
1910 resource_item_t* res = resource_create_from_string(cString);
1914 int defname_context_method = 2;
1915 if (defname_context_method == 1) {
1917 res->whereToPlaceData = myProto;
1918 res->ectx = myProto;
1919 res->offsetFromWhereToPlaceData = (int)offsetof(
struct X3D_Proto, __children);
1920 res->media_type = resm_vrml;
1921 res->parsed_request = strdup(
"From the EAI bootcamp of life ");
1922 parser_process_res_VRML_X3D(res);
1923 newHandle = X3D_NODE(myProto->__children.p[0]);
1926 else if(defname_context_method == 2) {
1928 res->whereToPlaceData = myGroup;
1929 res->ectx = JS_GetContextPrivate(cx);
1930 res->offsetFromWhereToPlaceData = (int)offsetof(
struct X3D_Group, children);
1931 res->media_type = resm_vrml;
1932 res->parsed_request = strdup(
"From the EAI bootcamp of life ");
1933 parser_process_res_VRML_X3D(res);
1934 newHandle = X3D_NODE(myGroup->children.p[0]);
1964 cString = STRDUP(
"node created in SFNodeConstr");
1967 }
else if (argc == 2) {
1970 #ifdef JSVRMLCLASSESVERBOSE
1971 printf (
"SFNodeConstr - have 2 arguments\n");
1974 if ((JSVAL_IS_STRING(argv[0])) && (JSVAL_IS_STRING(argv[1]))) {
1978 _idStr = JS_ValueToString(cx, argv[0]);
1980 _id_c = JS_GetStringBytes(_idStr);
1982 _id_c = JS_EncodeString(cx,_idStr);
1986 cString = STRDUP(_id_c);
1988 _idStr = JS_ValueToString(cx, argv[1]);
1990 _id_c = JS_GetStringBytes(_idStr);
1992 _id_c = JS_EncodeString(cx,_idStr);
1996 if (sscanf (_id_c,
"%p",&newHandle) != 1) {
1997 printf (
"SFNodeConstr - can not get handle from %s\n",_id_c);
2002 #ifdef JSVRMLCLASSESVERBOSE
2003 printf (
"string is :%s: new handle is %p\n",cString,newHandle);
2007 printf (
"SFNodeConstr - 2 args, expected 2 strings\n");
2013 printf(
"SFNodeConstr requires at least 1 string arg.\n");
2017 if(SM_method() == 2){
2019 if ((lhs = (AnyNative *) AnyNativeNew(FIELDTYPE_SFNode,NULL,NULL)) == NULL) {
2020 printf(
"AnyNativeNew failed in SFNodeConstr.\n");
2023 if (!JS_SetPrivateFw(cx, obj, lhs)) {
2024 printf(
"JS_SetPrivate failed in SFNodeConstr.\n");
2028 lhs->v->sfnode = newHandle;
2031 if ((newPtr = (SFNodeNative *) SFNodeNativeNew()) == NULL) {
2032 printf(
"SFNodeNativeNew failed in SFNodeConstr.\n");
2041 if (!JS_SetPrivateFw(cx, obj, newPtr)) {
2042 printf(
"JS_SetPrivate failed in SFNodeConstr.\n");
2046 newPtr->handle = newHandle;
2047 if(SM_method() == 0){
2048 newPtr->X3DString = (
char *)STRDUP(cString);
2050 if (!JS_DefineSFNodeSpecificProperties (cx, obj, newHandle)) {
2051 printf(
"JS_DefineSFNodeSpecificProperties failed in SFNodeConstr.\n");
2057 newPtr->valueChanged = 1;
2060 #ifdef JSVRMLCLASSESVERBOSE
2062 if (newHandle == NULL)
2063 printf(
"end of SFNodeConstr: created obj = %p, argc: %u mem ptr: %p (null pointer) text string: %s\n",
2064 obj, argc, newHandle, cString);
2066 printf(
"end of SFNodeConstr: created obj = %p, argc: %u mem ptr: %p (%s) text string: %s\n",
2067 obj, argc, newHandle, stringNodeType(newHandle->_nodeType),cString);
2072 *rval = OBJECT_TO_JSVAL(obj);
2074 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
2084SFNodeFinalize(JSContext *cx, JSObject *obj){
2086SFNodeFinalize(JSFreeOp *fop, JSObject *obj){
2087JSContext *cx = NULL;
2092 #ifdef JSVRMLCLASSESVERBOSE
2093 printf(
"SFNodeFinalize: obj = %p\n", obj);
2109 if ((ptr = (SFNodeNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
2113 if(SM_method() == 0)
2114 FREE_IF_NZ (ptr->X3DString);
2115 if(SM_method() == 2){
2116 any = (AnyNative*)ptr;
2117 if(any->gc) FREE_IF_NZ(any->v);
2121 JS_SetPrivateFw(cx,obj,NULL);
2126void X3D_ECMA_TO_JS(JSContext *cx,
void *Data,
int datalen,
int dataType, jsval *newval);
2127void X3D_MF_TO_JS(JSContext *cx, JSObject *obj,
void *Data,
int dataType, jsval *newval,
char *fieldName);
2128void X3D_SF_TO_JS(JSContext *cx, JSObject *obj,
void *Data,
unsigned datalen,
int dataType, jsval *newval);
2129void X3D_MF_TO_JS_B(JSContext *cx,
void *Data,
int dataType,
int *valueChanged, jsval *newval);
2130void X3D_SF_TO_JS_B(JSContext *cx,
void *Data,
unsigned datalen,
int dataType,
int *valueChanged, jsval *newval);
2131int getFieldFromNodeAndName(
struct X3D_Node* node,
const char *fieldname,
int *type,
int *kind,
int *iifield,
union anyVrml **value);
2134SFNodeGetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp){
2135#elif JS_VERSION == 185
2136SFNodeGetProperty(JSContext *cx, JSObject *obj, jsid iid, jsval *vp){
2138SFNodeGetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp){
2139 JSObject *obj = *hobj.address();
2140 jsid iid = *hiid.address();
2141 jsval *vp = hvp.address();
2153#if JS_VERSION >= 185
2155 if (!JS_IdToValue(cx,iid,&
id)) {
2156 printf(
"JS_IdToValue failed in SFNodeGetProperty.\n");
2160 if (JSVAL_IS_INT(
id)) {
2161 printf(
"SFNode has no [index] property.\n");
2167 _idStr = JS_ValueToString(cx,
id);
2169 _id_c = JS_GetStringBytes(_idStr);
2171 _id_c = JS_EncodeString(cx,_idStr);
2173 #ifdef JSVRMLCLASSESVERBOSE
2174 printf (
"start of SFNodeGetProperty... id is %s\n",_id_c);
2178 if (strcmp (
"undefined",_id_c) == 0)
return JS_TRUE;
2181 if (strcmp (
"toString",_id_c) == 0)
return JS_TRUE;
2182 if (strcmp (
"valueOf",_id_c) == 0)
return JS_TRUE;
2183 if (strcmp (
"equals",_id_c) == 0)
return JS_TRUE;
2184 if (strcmp (
"assign",_id_c) == 0)
return JS_TRUE;
2187 if ((ptr = (SFNodeNative *)JS_GetPrivateFw(cx, obj)) != NULL) {
2188 int ifound, type, kind, iifield, *valueChanged, sfsize, sftype;
2190 char *fieldname = _id_c;
2192 if(SM_method() == 2){
2193 AnyNative *any = (AnyNative *)ptr;
2194 node = any->v->sfnode;
2198 #ifdef JSVRMLCLASSESVERBOSE
2199 printf (
"SFNodeGetProperty, working on node %p, field %s\n",ptr->handle,_id_c);
2201 if(SM_method() == 2){
2202 ifound = getFieldFromNodeAndName(node,fieldname,&type,&kind,&iifield,&value);
2203 if(ifound && value){
2205 valueChanged = &node->_change;
2207 if(node->_nodeType == NODE_Script){
2209 struct X3D_Script *scriptnode = X3D_SCRIPT(node);
2210 getFieldFromScript((
struct Shader_Script*)scriptnode->__scriptObj,fieldname,&type,&kind,&iifield,&value,&valueChanged);
2212 sftype = type2SF(type);
2213 sfsize = sizeofSForMF(sftype);
2217 case FIELDTYPE_SFBool:
2218 case FIELDTYPE_SFFloat:
2219 case FIELDTYPE_SFTime:
2220 case FIELDTYPE_SFDouble:
2221 case FIELDTYPE_SFInt32:
2222 case FIELDTYPE_SFString:
2223 X3D_ECMA_TO_JS(cx, value,sfsize,type,vp);
2225 case FIELDTYPE_SFColor:
2226 case FIELDTYPE_SFColorRGBA:
2227 case FIELDTYPE_SFNode:
2228 case FIELDTYPE_SFVec2f:
2229 case FIELDTYPE_SFVec3f:
2230 case FIELDTYPE_SFVec4f:
2231 case FIELDTYPE_SFVec2d:
2232 case FIELDTYPE_SFVec3d:
2233 case FIELDTYPE_SFVec4d:
2234 case FIELDTYPE_SFRotation:
2235 X3D_SF_TO_JS_B(cx, value,sfsize, type, valueChanged, vp);
2237 case FIELDTYPE_MFInt32:
2238 case FIELDTYPE_MFBool:
2239 case FIELDTYPE_MFFloat:
2240 case FIELDTYPE_MFDouble:
2241 case FIELDTYPE_MFTime:
2242 case FIELDTYPE_MFString:
2243 case FIELDTYPE_MFNode:
2244 case FIELDTYPE_MFColor:
2245 case FIELDTYPE_MFColorRGBA:
2246 case FIELDTYPE_MFVec2f:
2247 case FIELDTYPE_MFVec3f:
2248 case FIELDTYPE_MFVec4f:
2249 case FIELDTYPE_MFVec2d:
2250 case FIELDTYPE_MFVec3d:
2251 case FIELDTYPE_MFVec4d:
2252 case FIELDTYPE_MFRotation:
2253 case FIELDTYPE_SFImage:
2255 X3D_MF_TO_JS_B(cx, value, type, valueChanged, vp);
2258 printf (
"unhandled type FIELDTYPE_ %d in getSFNodeProperty!\n", type) ;
2271 if(SM_method() == 0){
2274 if( ptr->handle && ptr->handle->_nodeType== NODE_Script )
2280 myObj = (
struct Shader_Script*)X3D_SCRIPT(ptr->handle)->__scriptObj;
2282 ScriptControl = getScriptControlIndex(myObj->num);
2283 cx2 = (JSContext*)ScriptControl->cx;
2284 obj2 = (JSObject*)ScriptControl->glob;
2285 if (JS_GetProperty (cx2, obj2, _id_c, &rval)) {
2286 if (JSVAL_IS_NULL(rval)) {
2287 ConsoleMessage (
"Script - field :%s: does not exist",_id_c);
2296 JS_DefineSFNodeSpecificProperties (cx, obj, ptr->handle);
2299 if (JS_LookupProperty (cx, obj, _id_c, &rval)) {
2300 if (JSVAL_IS_NULL(rval)) {
2303 ConsoleMessage (
"SFNode - field :%s: does not exist",_id_c);
2308 #ifdef JSVRMLCLASSESVERBOSE
2309 printf (
"wondering about rval.. %d. it is a\n",(
int)rval);
2310 if (JSVAL_IS_INT(rval)) printf (
"IS AN INT\n");
2311 if (JSVAL_IS_OBJECT(rval)) printf (
"IS AN OBJECT\n");
2312 if (JSVAL_IS_STRING(rval)) printf (
"IS AN STRING\n");
2313 if (rval == JSVAL_FALSE) printf (
"FALSE\n");
2314 if (rval == JSVAL_NULL) printf (
"NULL\n");
2315 if (rval == JSVAL_ONE) printf (
"ONE\n");
2316 if (rval == JSVAL_ZERO) printf (
"ZERO\n");
2317 if (rval == JSVAL_VOID) printf (
"VOID\n");
2318 if (rval == JSVAL_TRUE) printf (
"TRUE\n");
2326 #ifdef JSVRMLCLASSESVERBOSE
2327 printf (
"SFNodeGetProperty, found field \"%s\" in node, returning property\n",_id_c);
2332 #ifdef JSVRMLCLASSESVERBOSE
2333 printf (
"SFNodeGetProperty, did not find field \"%s\" in node.\n",_id_c);
2339 printf (
"could not get private for SFNodeGetProperty, field :%s:\n",_id_c);
2346void Parser_scanStringValueToMem_B(
union anyVrml* any, indexT ctype,
const char *value,
int isXML);
2347void JS_MF_TO_X3D(JSContext *cx, JSObject * obj,
void *Data,
int dataType, jsval *newval);
2350SFNodeSetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp){
2351#elif JS_VERSION == 185
2352SFNodeSetProperty(JSContext *cx, JSObject *obj, jsid iid, JSBool strict, jsval *vp){
2354SFNodeSetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp){
2355 JSObject *obj = *hobj.address();
2356 jsid iid = *hiid.address();
2357 jsval *vp = hvp.address();
2359 JSString *_idStr, *_valStr;
2360 char *_id_c, *_val_c;
2364#if JS_VERSION >= 185
2366 if (!JS_IdToValue(cx,iid,&
id)) {
2367 printf(
"JS_IdToValue failed in SFNodeSetProperty.\n");
2371 if(SM_method() == 2){
2373 int ifound, type, kind, iifield, *valueChanged, sfsize, sftype;
2378 if((lhs = (AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
2381 _idStr = JS_ValueToString(cx,
id);
2383 _id_c = JS_GetStringBytes(_idStr);
2385 _id_c = JS_EncodeString(cx,_idStr);
2388 node = lhs->v->sfnode;
2389 ifound = getFieldFromNodeAndName(node,fieldname,&type,&kind,&iifield,&value);
2391 valueChanged = &node->_change;
2392 if(node->_nodeType == NODE_Script){
2394 struct X3D_Script *scriptnode = X3D_SCRIPT(node);
2395 getFieldFromScript((
struct Shader_Script*)scriptnode->__scriptObj,fieldname,&type,&kind,&iifield,&value,&valueChanged);
2397 sftype = type2SF(type);
2398 sfsize = sizeofSForMF(sftype);
2401 if( JSVAL_IS_NULL(*vp)){
2402 if(type == FIELDTYPE_SFNode)
2403 value->sfnode = NULL;
2407 }
else if ((*vp).isObject()) {
2409 if ((rhs = (AnyNative *)JS_GetPrivateFw(cx, JSVAL_TO_OBJECT(*vp))) == NULL) {
2414 if(type == rhs->type){
2419 shallow_copy_field(rhs->type,rhs->v,value);
2426 case FIELDTYPE_SFBool:
2427 case FIELDTYPE_SFFloat:
2428 case FIELDTYPE_SFTime:
2429 case FIELDTYPE_SFDouble:
2430 case FIELDTYPE_SFInt32:
2431 case FIELDTYPE_SFString:
2432 JS_ECMA_TO_X3D(cx, value,sfsize,type,vp);
2459 printf (
"unhandled type FIELDTYPE_ %d in setSFNodeProperty?\n", type) ;
2481 _idStr = JS_ValueToString(cx,
id);
2482 _valStr = JS_ValueToString(cx, *vp);
2484 _id_c = JS_GetStringBytes(_idStr);
2485 _val_c = JS_GetStringBytes(_valStr);
2487 _id_c = JS_EncodeString(cx,_idStr);
2488 _val_c = JS_EncodeString(cx,_valStr);
2492 #ifdef JSVRMLCLASSESVERBOSE
2493 printf(
"SFNodeSetProperty: obj = %p, id = %s, vp = %s\n",
2494 obj, _id_c, _val_c);
2498 if ((ptr = (SFNodeNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
2499 printf(
"JS_GetPrivate failed in SFNodeSetProperty.\n");
2503 if (JSVAL_IS_INT(
id)) {
2508 if(SM_method() == 0){
2509 ptr->valueChanged++;
2510 val_len = (int) strlen(_val_c) + 1;
2512 #ifdef JSVRMLCLASSESVERBOSE
2513 printf (
"switching on %d\n",JSVAL_TO_INT(
id));
2516 switch (JSVAL_TO_INT(
id)) {
2518 if ((strlen(ptr->X3DString) + 1) > val_len) {
2520 (
char *) REALLOC (ptr->X3DString, val_len *
sizeof(
char));
2522 memset(ptr->X3DString, 0, val_len);
2523 memmove(ptr->X3DString, _val_c, val_len);
2526 scanUnsignedIntoValue(_val_c,&tmp);
2527 ptr->handle = X3D_NODE(tmp);
2532 #ifdef JSVRMLCLASSESVERBOSE
2533 printf (
"JS_IS_INT false\n");
2535 printf (
"SFNodeSetProperty, setting node %p field %s to value %s\n", ptr->handle,_id_c,_val_c);
2539 ptx = X3D_NODE(ptr->handle);
2540 printf (
"node is of type %s\n",stringNodeType(ptx->_nodeType));
2545 if( ptr->handle->_nodeType== NODE_Script )
2552 char scriptline[100];
2553 JSScript *eventInFunction;
2564 myObj = (
struct Shader_Script*)X3D_SCRIPT(ptr->handle)->__scriptObj;
2566 ScriptControl = getScriptControlIndex(myObj->num);
2567 if ((!ScriptControl->_initialized) || (!ScriptControl->scriptOK)) {
2573 cx2 = (JSContext*)ScriptControl->cx;
2574 obj2 = (JSObject*)ScriptControl->glob;
2581 JSAutoRequest ar(cx);
2584 JSAutoCompartment ac(cx, obj2);
2589 JS_NewNumberValue(cx2, TickTime(), &zimbo);
2590 if (!JS_DefineProperty(cx2,obj2,
"__eventInTickTime", zimbo, JS_GET_PROPERTY_STUB, JS_SET_PROPERTY_STUB2, JSPROP_PERMANENT)) {
2591 printf(
"JS_DefineProperty failed for __eventInTickTime at %s:%d.\n",__FILE__,__LINE__);
2598 myfield = script_getField_viaCharName(myObj, _id_c);
2685 strcpy(scriptline,_id_c);
2686 #ifdef JSVRMLCLASSESVERBOSE
2687 printf (
"set_one_ECMAtype, calling JS_DefineProperty on name %s obj %u, setting setECMANative, 0 \n",scriptline,obj2);
2690 if (!JS_DefineProperty(cx2,obj2, scriptline, newval, JS_GET_PROPERTY_STUB, JS_SET_PROPERTY_STUB3, JSPROP_PERMANENT)) {
2691 printf(
"JS_DefineProperty failed for SFNodeSetProperty at %s:%d.\n",__FILE__,__LINE__);
2692 #if defined(JS_THREADSAFE)
2699 JSparamnames = getJSparamnames();
2700 eventInFunction = (JSScript*) JSparamnames[myfield->fieldDecl->JSparamNameIndex].eventInFunction;
2701 if ( eventInFunction == NULL) {
2703 sprintf (scriptline,
"set_%s(%s,__eventInTickTime)", _id_c, _id_c);
2705 eventInFunction = JS_CompileScript(cx2, obj2, scriptline, strlen(scriptline),
"compile eventIn",1);
2708 JSparamnames[myfield->fieldDecl->JSparamNameIndex].eventInFunction = eventInFunction;
2709 #if JS_VERSION >= 185
2710 if (!JS_AddObjectRoot(cx,(JSObject**)(&JSparamnames[myfield->fieldDecl->JSparamNameIndex].eventInFunction))) {
2711 printf(
"JS_AddObjectRoot failed for compilation of script \"%s\" at %s:%d.\n",scriptline,__FILE__,__LINE__);
2721 if (!JS_ExecuteScript(cx2, obj2, eventInFunction, &zimbo))
2723 printf (
"failed to set parameter for eventIn %s in FreeWRL code %s:%d\n",_id_c,__FILE__,__LINE__); \
2736 if(0)
if( ptr->handle->_nodeType== NODE_Script )
2743 script = (
struct Shader_Script*)X3D_SCRIPT(ptr->handle)->__scriptObj;
2745 ScriptControl = getScriptControlIndex(script->num);
2746 if ((!ScriptControl->_initialized) || (!ScriptControl->scriptOK)) {
2750 myfield = script_getField_viaCharName(script, _id_c);
2751 if(!myfield)
return JS_FALSE;
2752 itype = ScriptFieldDecl_getType(myfield);
2753 kind = ScriptFieldDecl_getMode(myfield);
2754 Parser_scanStringValueToMem_B(&myfield->value, itype, _val_c, FALSE);
2755 if(kind == PKW_inputOnly || kind == PKW_inputOutput)
2756 myfield->eventInSet = TRUE;
2757 if(kind == PKW_inputOutput || kind == PKW_outputOnly)
2758 myfield->valueChanged = TRUE;
2762 setField_fromJavascript (X3D_NODE(ptr->handle), _id_c, _val_c, FALSE);
2772SFRotationGetAxis(JSContext *cx, uintN argc, jsval *vp) {
2773 JSObject *obj = JS_THIS_OBJECT(cx,vp);
2774 jsval *argv = JS_ARGV(cx,vp);
2781 #ifdef JSVRMLCLASSESVERBOSE
2782 printf (
"start of SFRotationGetAxis\n");
2785 if ((_retObj = JS_ConstructObjectFw(cx, &SFVec3fClass, NULL, NULL)) == NULL) {
2786 printf(
"JS_ConstructObject failed in SFRotationGetAxis.\n");
2790 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(_retObj));
2794 AnyNative *_retNative;
2795 if ((_rot = (AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
2796 printf(
"JS_GetPrivate failed for obj in SFRotationGetAxis.\n");
2800 if ((_retNative = (AnyNative *)JS_GetPrivateFw(cx, _retObj)) == NULL) {
2801 printf(
"JS_GetPrivate failed for _retObj in SFRotationGetAxis.\n");
2804 cc = _rot->v->sfrotation.c;
2805 cclhs = _retNative->v->sfvec3f.c;
2807 SFRotationNative *_rot;
2808 SFVec3fNative *_retNative;
2809 if ((_rot = (SFRotationNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
2810 printf(
"JS_GetPrivate failed for obj in SFRotationGetAxis.\n");
2814 if ((_retNative = (SFVec3fNative *)JS_GetPrivateFw(cx, _retObj)) == NULL) {
2815 printf(
"JS_GetPrivate failed for _retObj in SFRotationGetAxis.\n");
2819 cclhs = _retNative->v.c;
2822 veccopy3f(cclhs,cc);
2824 #ifdef JSVRMLCLASSESVERBOSE
2825 printf(
"SFRotationGetAxis: obj = %p, result = [%.9g, %.9g, %.9g]\n",
2827 (_retNative->v).c[0],
2828 (_retNative->v).c[1],
2829 (_retNative->v).c[2]);
2836SFRotationInverse(JSContext *cx, uintN argc, jsval *vp) {
2837 JSObject *obj = JS_THIS_OBJECT(cx,vp);
2838 jsval *argv = JS_ARGV(cx,vp);
2840 JSObject *_retObj, *_proto;
2846 #ifdef JSVRMLCLASSESVERBOSE
2847 printf (
"start of SFRotationInverse\n");
2850 if ((_proto = JS_GetPrototypeFw(cx, obj)) == NULL) {
2851 printf(
"JS_GetPrototype failed in SFRotationInverse.\n");
2854 if ((_retObj = JS_ConstructObjectFw(cx, &SFRotationClass, _proto, NULL)) == NULL) {
2855 printf(
"JS_ConstructObject failed in SFRotationInverse.\n");
2858 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(_retObj));
2862 AnyNative *_rot, *_retNative;
2864 if ((_rot = (AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
2865 printf(
"JS_GetPrivate failed for obj in SFRotationInverse.\n");
2869 if ((_retNative = (AnyNative *)JS_GetPrivateFw(cx, _retObj)) == NULL) {
2870 printf(
"JS_GetPrivate failed for _retObj in SFRotationInverse.\n");
2873 cc = _rot->v->sfrotation.c;
2874 cclhs = _retNative->v->sfrotation.c;
2877 SFRotationNative *_rot, *_retNative;
2879 if ((_rot = (SFRotationNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
2880 printf(
"JS_GetPrivate failed for obj in SFRotationInverse.\n");
2884 if ((_retNative = (SFRotationNative *)JS_GetPrivateFw(cx, _retObj)) == NULL) {
2885 printf(
"JS_GetPrivate failed for _retObj in SFRotationInverse.\n");
2888 _retNative->valueChanged = 1;
2890 cclhs = _retNative->v.c;
2893 vrmlrot_to_quaternion(&q1, (
double) cc[0],
2894 (
double) cc[1], (
double)cc[2], (
double) cc[3]);
2897 quaternion_inverse(&qret,&q1);
2901 quaternion_to_vrmlrot(&qret, &a, &b, &c, &d);
2903 cclhs[0] = (float) a;
2904 cclhs[1] = (float) b;
2905 cclhs[2] = (float) c;
2906 cclhs[3] = (float) d;
2914SFRotationMultiply(JSContext *cx, uintN argc, jsval *vp) {
2915 JSObject *obj = JS_THIS_OBJECT(cx,vp);
2916 jsval *argv = JS_ARGV(cx,vp);
2918 Quaternion q1,q2,qret;
2921 JSObject *_multObj, *_proto, *_retObj;
2922 float *cc, *cc1, *cclhs;
2923 #ifdef JSVRMLCLASSESVERBOSE
2924 printf (
"start of SFRotationMultiply\n");
2927 if (!JS_ConvertArguments(cx, argc, argv,
"o", &_multObj)) {
2928 printf(
"JS_ConvertArguments failed in SFRotationMultiply.\n");
2931 CHECK_CLASS(cx,_multObj,argv,__FUNCTION__,SFRotationClass)
2933 if ((_proto = JS_GetPrototypeFw(cx, _multObj)) == NULL) {
2934 printf(
"JS_GetPrototype failed in SFRotationMultiply.\n");
2938 if ((_retObj = JS_ConstructObjectFw(cx, &SFRotationClass, _proto, NULL)) == NULL) {
2939 printf(
"JS_ConstructObject failed in SFRotationMultiply.\n");
2944 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(_retObj));
2947 AnyNative *_rot1, *_rot2, *_retNative;
2949 if ((_rot1 = (AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
2950 printf(
"JS_GetPrivate failed for obj in SFRotationMultiply.\n");
2954 if ((_rot2 = (AnyNative *)JS_GetPrivateFw(cx, _multObj)) == NULL) {
2955 printf(
"JS_GetPrivate failed for _multObj in SFRotationMultiply.\n");
2959 if ((_retNative = (AnyNative *)JS_GetPrivateFw(cx, _retObj)) == NULL) {
2960 printf(
"JS_GetPrivate failed for _retObj in SFRotationMultiply.\n");
2963 cc = _rot1->v->sfrotation.c;
2964 cc1 = _rot2->v->sfrotation.c;
2965 cclhs = _retNative->v->sfrotation.c;
2967 SFRotationNative *_rot1, *_rot2, *_retNative;
2969 if ((_rot1 = (SFRotationNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
2970 printf(
"JS_GetPrivate failed for obj in SFRotationMultiply.\n");
2974 if ((_rot2 = (SFRotationNative *)JS_GetPrivateFw(cx, _multObj)) == NULL) {
2975 printf(
"JS_GetPrivate failed for _multObj in SFRotationMultiply.\n");
2979 if ((_retNative = (SFRotationNative *)JS_GetPrivateFw(cx, _retObj)) == NULL) {
2980 printf(
"JS_GetPrivate failed for _retObj in SFRotationMultiply.\n");
2985 cclhs = _retNative->v.c;
2986 _retNative->valueChanged = 1;
2990 vrmlrot_to_quaternion(&q1, (
double) cc[0],
2991 (
double) cc[1], (
double) cc[2], (
double) cc[3]);
2992 vrmlrot_to_quaternion(&q2, (
double) cc1[0],
2993 (
double) cc1[1], (
double) cc1[2], (
double) cc1[3]);
2996 quaternion_multiply(&qret,&q1,&q2);
3000 quaternion_to_vrmlrot(&qret, &a, &b, &c, &d);
3002 cclhs[0] = (float) a;
3003 cclhs[1] = (float) b;
3004 cclhs[2] = (float) c;
3005 cclhs[3] = (float) d;
3013SFRotationMultVec(JSContext *cx, uintN argc, jsval *vp) {
3014 JSObject *obj = JS_THIS_OBJECT(cx,vp);
3015 jsval *argv = JS_ARGV(cx,vp);
3017 JSObject *_multObj, *_retObj, *_proto;
3024 float *rot, *vec, *cclhs;
3025 float c1[3], c2[3], r[3];
3028 #ifdef JSVRMLCLASSESVERBOSE
3029 printf (
"start of SFRotationMultiVec\n");
3032 if (!JS_ConvertArguments(cx, argc, argv,
"o", &_multObj)) {
3033 printf(
"JS_ConvertArguments failed in SFRotationMultVec.\n");
3037 CHECK_CLASS(cx,_multObj,argv,__FUNCTION__,SFVec3fClass)
3039 if ((_proto = JS_GetPrototypeFw(cx, _multObj)) == NULL) {
3040 printf(
"JS_GetPrototype failed in SFRotationMultVec.\n");
3044 if ((_retObj = JS_ConstructObjectFw(cx, &SFVec3fClass, _proto, NULL)) == NULL) {
3045 printf(
"JS_ConstructObject failed in SFRotationMultVec.\n");
3049 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(_retObj));
3053 AnyNative *_vec, *_retNative;
3055 if ((_rot = (AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
3056 printf(
"JS_GetPrivate failed for obj in SFRotationMultVec.\n");
3060 if ((_vec = (AnyNative *)JS_GetPrivateFw(cx, _multObj)) == NULL) {
3061 printf(
"JS_GetPrivate failed for_multObjin SFRotationMultVec.\n");
3064 if ((_retNative = (AnyNative *)JS_GetPrivateFw(cx, _retObj)) == NULL) {
3065 printf(
"JS_GetPrivate failed for _retObj in SFRotationMultVec.\n");
3068 rot = _rot->v->sfrotation.c;
3069 vec = _vec->v->sfvec3f.c;
3070 cclhs = _retNative->v->sfvec3f.c;
3073 SFRotationNative *_rot;
3074 SFVec3fNative *_vec, *_retNative;
3076 if ((_rot = (SFRotationNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
3077 printf(
"JS_GetPrivate failed for obj in SFRotationMultVec.\n");
3083 if ((_vec = (SFVec3fNative *)JS_GetPrivateFw(cx, _multObj)) == NULL) {
3084 printf(
"JS_GetPrivate failed for_multObjin SFRotationMultVec.\n");
3088 if ((_retNative = (SFVec3fNative *)JS_GetPrivateFw(cx, _retObj)) == NULL) {
3089 printf(
"JS_GetPrivate failed for _retObj in SFRotationMultVec.\n");
3094 cclhs = _retNative->v.c;
3096 rl = veclength3f(rot);
3098 s = (float) sin(angle);
3099 c = (float) cos(angle);
3100 veccross3f(c1,rot,vec);
3101 rl = veclength3f(c1);
3102 vecscale3f(c1,c1,1.0f/rl);
3103 veccross3f(c2,rot,c1);
3104 rl = veclength3f(c2);
3105 vecscale3f(c2,c2,1.0f/rl);
3107 cclhs[i] = (
float) (vec[i] + s * c1[i] + (1.0-c) * c2[i]);
3114SFRotationSetAxis(JSContext *cx, uintN argc, jsval *vp) {
3115 JSObject *obj = JS_THIS_OBJECT(cx,vp);
3116 jsval *argv = JS_ARGV(cx,vp);
3118 JSObject *_setAxisObj;
3121 #ifdef JSVRMLCLASSESVERBOSE
3122 printf (
"start of SFRotationSetAxis\n");
3125 if (!JS_ConvertArguments(cx, argc, argv,
"o", &_setAxisObj)) {
3126 printf(
"JS_ConvertArguments failed in SFRotationSetAxis.\n");
3130 CHECK_CLASS(cx,_setAxisObj,argv,__FUNCTION__,SFVec3fClass)
3132 if(SM_method() == 2){
3135 if ((_rot = (AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
3136 printf(
"JS_GetPrivate failed for obj in SFRotationSetAxis.\n");
3140 if ((_vec = (AnyNative *)JS_GetPrivateFw(cx, _setAxisObj)) == NULL) {
3141 printf(
"JS_GetPrivate failed for _retObj in SFRotationSetAxis.\n");
3144 rot = _rot->v->sfrotation.c;
3145 vec = _vec->v->sfvec3f.c;
3147 SFRotationNative *_rot;
3148 SFVec3fNative *_vec;
3149 if ((_rot = (SFRotationNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
3150 printf(
"JS_GetPrivate failed for obj in SFRotationSetAxis.\n");
3154 if ((_vec = (SFVec3fNative *)JS_GetPrivateFw(cx, _setAxisObj)) == NULL) {
3155 printf(
"JS_GetPrivate failed for _retObj in SFRotationSetAxis.\n");
3163 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
3166 #ifdef JSVRMLCLASSESVERBOSE
3167 printf(
"SFRotationSetAxis: obj = %p, result = [%.9g, %.9g, %.9g, %.9g]\n",
3179SFRotationSlerp(JSContext *cx, uintN argc, jsval *vp) {
3180 JSObject *obj = JS_THIS_OBJECT(cx,vp);
3181 jsval *argv = JS_ARGV(cx,vp);
3183 jsval *rval = &rvalinst;
3185 JSObject *_destObj, *_retObj, *_proto;
3186 Quaternion _quat, _quat_dest, _quat_ret;
3188 float *rot, *dest, *ret;
3190 #ifdef JSVRMLCLASSESVERBOSE
3191 printf (
"start of SFRotationSlerp\n");
3193 if (!JS_ConvertArguments(cx, argc, argv,
"o d", &_destObj, &t)) {
3194 printf(
"JS_ConvertArguments failed in SFRotationSlerp.\n");
3198 CHECK_CLASS(cx,_destObj,argv,__FUNCTION__,SFRotationClass)
3209 *rval = OBJECT_TO_JSVAL(obj);
3210 }
else if (APPROX(t, 1)) {
3211 *rval = OBJECT_TO_JSVAL(_destObj);
3213 if ((_proto = JS_GetPrototypeFw(cx, _destObj)) == NULL) {
3214 printf(
"JS_GetPrototype failed in SFRotationSlerp.\n");
3218 if ((_retObj = JS_ConstructObjectFw(cx, &SFRotationClass, _proto, NULL)) == NULL) {
3219 printf(
"JS_ConstructObject failed in SFRotationSlerp.\n");
3223 *rval = OBJECT_TO_JSVAL(_retObj);
3225 if(SM_method() == 2){
3226 AnyNative *_rot, *_dest, *_ret;
3227 if ((_rot = (AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
3228 printf(
"JS_GetPrivate failed for obj in SFRotationSlerp.\n");
3232 if ((_dest = (AnyNative *)JS_GetPrivateFw(cx, _destObj)) == NULL) {
3233 printf(
"JS_GetPrivate failed for _destObj in SFRotationSlerp.\n");
3237 if ((_ret = (AnyNative *)JS_GetPrivateFw(cx, _retObj)) == NULL) {
3238 printf(
"JS_GetPrivate failed for _retObj in SFRotationSlerp.\n");
3241 rot = _rot->v->sfrotation.c;
3242 dest = _dest->v->sfrotation.c;
3243 ret = _ret->v->sfrotation.c;
3245 SFRotationNative *_rot, *_dest, *_ret;
3246 if ((_rot = (SFRotationNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
3247 printf(
"JS_GetPrivate failed for obj in SFRotationSlerp.\n");
3251 if ((_dest = (SFRotationNative *)JS_GetPrivateFw(cx, _destObj)) == NULL) {
3252 printf(
"JS_GetPrivate failed for _destObj in SFRotationSlerp.\n");
3256 if ((_ret = (SFRotationNative *)JS_GetPrivateFw(cx, _retObj)) == NULL) {
3257 printf(
"JS_GetPrivate failed for _retObj in SFRotationSlerp.\n");
3264 vrmlrot_to_quaternion(&_quat,
3270 vrmlrot_to_quaternion(&_quat_dest,
3276 quaternion_slerp(&_quat_ret, &_quat, &_quat_dest, t);
3277 quaternion_to_vrmlrot4f(&_quat_ret,ret);
3281 JS_SET_RVAL(cx,vp,*rval);
3288SFRotationToString(JSContext *cx, uintN argc, jsval *vp) {
3289 JSObject *obj = JS_THIS_OBJECT(cx,vp);
3290 jsval *argv = JS_ARGV(cx,vp);
3297 #ifdef JSVRMLCLASSESVERBOSE
3298 printf (
"start of SFRotationToString\n");
3303 if(SM_method() == 2){
3305 if ((ptr = (AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
3306 printf(
"JS_GetPrivate failed in SFRotationToString.\n");
3309 cc = ptr->v->sfrotation.c;
3311 SFRotationNative *ptr;
3312 if ((ptr = (SFRotationNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
3313 printf(
"JS_GetPrivate failed in SFRotationToString.\n");
3318 memset(buff, 0, STRING);
3319 sprintf(buff,
"%.9g %.9g %.9g %.9g",
3320 cc[0], cc[1], cc[2], cc[3]);
3321 _str = JS_NewStringCopyZ(cx, buff);
3323 JS_SET_RVAL(cx,vp,STRING_TO_JSVAL(_str));
3326 REMOVE_ROOT (cx,ptr)
3327 REMOVE_ROOT (cx,_str)
3332SFRotationAssign(JSContext *cx, uintN argc, jsval *vp) {
3333 JSObject *obj = JS_THIS_OBJECT(cx,vp);
3334 jsval *argv = JS_ARGV(cx,vp);
3335 JSString *_id_jsstr;
3337 JSObject *_from_obj;
3343 #ifdef JSVRMLCLASSESVERBOSE
3344 printf (
"start of SFRotationAssign\n");
3346 if(SM_method() == 2){
3347 AnyNative *lhs, *rhs;
3348 if ((lhs = (AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
3349 printf(
"JS_GetPrivate failed for obj in SFRotationfAssign.\n");
3352 if (!(*vp).isObject())
3354 if ((rhs = (AnyNative *)JS_GetPrivateFw(cx, JSVAL_TO_OBJECT(*vp))) == NULL) {
3355 printf(
"JS_ConvertArguments failed in SFRotationAssign. \n");
3358 if(lhs->type != rhs->type)
return JS_FALSE;
3359 AnyNativeAssign(lhs,rhs);
3360 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
3364 SFRotationNative *fptr, *ptr;
3366 if ((ptr = (SFRotationNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
3367 printf(
"JS_GetPrivate failed for obj in SFRotationAssign.\n");
3371 CHECK_CLASS(cx,obj,argv,__FUNCTION__,SFRotationClass)
3373 if (JS_ConvertArguments(cx, argc, argv,
"oS", &_from_obj, &_id_jsstr) == JS_TRUE) {
3374 _id_str = JS_EncodeString(cx,_id_jsstr);
3377 printf(
"JS_ConvertArguments failed in SFRotationAssign.\n");
3382 if (_from_obj == NULL) {
3383 printf (
"we have an assignment to null in SFRotationAssign\n");
3384 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(NULL));
3389 CHECK_CLASS(cx,_from_obj,argv,__FUNCTION__,SFRotationClass)
3391 if ((fptr = (SFRotationNative *)JS_GetPrivateFw(cx, _from_obj)) == NULL) {
3392 printf(
"JS_GetPrivate failed for _from_obj in SFRotationAssign.\n");
3395 #ifdef JSVRMLCLASSESVERBOSE
3396 printf(
"SFRotationAssign: obj = %p, id = \"%s\", from = %p\n",
3397 obj, _id_str, _from_obj);
3400 SFRotationNativeAssign(ptr, fptr);
3401 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
3405 #ifdef JSVRMLCLASSESVERBOSE
3406 printf(
"SFRotationAssign: returning object as jsval\n");
3412SFRotationConstr(JSContext *cx, uintN argc, jsval *vp) {
3413 JSObject *obj = JS_NewObject(cx,&SFRotationClass,NULL,NULL);
3414 jsval *argv = JS_ARGV(cx,vp);
3417 JSObject *_ob1, *_ob2;
3424 float *cc, *vec, *
vec2;
3426 #ifdef JSVRMLCLASSESVERBOSE
3427 printf (
"start of SFRotationConstr\n");
3431 if(SM_method() == 2){
3433 if((any = (AnyNative*)AnyNativeNew(FIELDTYPE_SFRotation,NULL,NULL)) == NULL){
3434 printf(
"AnyfNativeNew failed in SFRotationConstr.\n");
3437 if (!JS_SetPrivateFw(cx, obj, any)) {
3438 printf(
"JS_SetPrivate failed in SFRotationConstr.\n");
3441 cc = any->v->sfrotation.c;
3443 SFRotationNative *ptr;
3445 if ((ptr = (SFRotationNative *)SFRotationNativeNew()) == NULL) {
3446 printf(
"SFRotationNativeNew failed in SFRotationConstr.\n");
3455 if (!JS_SetPrivateFw(cx, obj, ptr)) {
3456 printf(
"JS_SetPrivate failed in SFRotationConstr.\n");
3459 ptr->valueChanged = 1;
3464 cc[0] = 0.0f; cc[1] = 0.0f; cc[2] = 1.0f; cc[3] = 0.0f;
3466 }
else if (argc == 2) {
3468 if (argv[0].isObject()) {
3470 _ob1 = JSVAL_TO_OBJECT(argv[0]);
3473 CHECK_CLASS(cx,_ob1,argv,__FUNCTION__,SFVec3fClass)
3475 AnyNative *_vec = NULL;
3476 if ((_vec = (AnyNative *)JS_GetPrivateFw(cx, _ob1)) == NULL) {
3477 printf(
"JS_GetPrivate failed for arg format \"o d\" in SFRotationConstr.\n");
3480 vec = _vec->v->sfvec3f.c;
3482 SFVec3fNative *_vec = NULL;
3483 if ((_vec = (SFVec3fNative *)JS_GetPrivateFw(cx, _ob1)) == NULL) {
3484 printf(
"JS_GetPrivate failed for arg format \"o d\" in SFRotationConstr.\n");
3491 if (argv[1].isObject()) {
3493 _ob2 = JSVAL_TO_OBJECT(argv[1]);
3497 CHECK_CLASS(cx,_ob2,argv,__FUNCTION__,SFVec3fClass)
3499 AnyNative *_vec2 = NULL;
3500 if ((_vec2 = (AnyNative *)JS_GetPrivateFw(cx, _ob2)) == NULL) {
3501 printf(
"JS_GetPrivate failed for _ob1 in SFRotationConstr.\n");
3504 vec2 = _vec2->v->sfvec3f.c;
3506 SFVec3fNative *_vec2 = NULL;
3507 if ((_vec2 = (SFVec3fNative *)JS_GetPrivateFw(cx, _ob2)) == NULL) {
3508 printf(
"JS_GetPrivate failed for _ob1 in SFRotationConstr.\n");
3515 if (!JSVAL_IS_NUMBER(argv[1])) {
3516 printf (
"SFRotationConstr param error - number expected\n");
3519 if (!JS_ValueToNumber(cx, argv[1], &doub)) {
3520 printf(
"JS_ValueToNumber failed in SFRotationConstr.\n");
3530 cc[3] = (float) doub;
3532 v1len = veclength3f(vec);
3533 v2len = veclength3f(
vec2);
3534 v12dp = vecdot3f(vec,
vec2);
3535 veccross3f(cc,vec,
vec2);
3539 v12dp /= v1len * v2len;
3540 cc[3] = (float) atan2(sqrt(1 - v12dp * v12dp), v12dp);
3542 }
else if (argc == 4 && JS_ConvertArguments(cx, argc, argv,
"d d d d",
3543 &(pars[0]), &(pars[1]), &(pars[2]), &(pars[3]))) {
3544 cc[0] = (float) pars[0];
3545 cc[1] = (float) pars[1];
3546 cc[2] = (float) pars[2];
3547 cc[3] = (float) pars[3];
3549 printf(
"Invalid arguments for SFRotationConstr.\n");
3553 #ifdef JSVRMLCLASSESVERBOSE
3554 printf(
"SFRotationConstr: obj = %p, %u args, %f %f %f %f\n",
3556 cc[0], cc[1], cc[2], cc[3]);
3560 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
3567SFRotationGetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp){
3568 JSObject *obj = *hobj.address();
3569 jsid iid = *hiid.address();
3570 jsval *vp = hvp.address();
3576 if (!JS_IdToValue(cx,iid,&
id)) {
3577 printf(
"JS_IdToValue failed in SFRotationGetProperty.\n");
3582 #ifdef JSVRMLCLASSESVERBOSE
3583 printf (
"start of SFRotationGetProperty\n");
3585 if(SM_method()== 2){
3587 if ((ptr = (AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
3588 printf(
"JS_GetPrivate failed in SFRotationGetProperty.\n");
3591 cc = ptr->v->sfrotation.c;
3593 SFRotationNative *ptr;
3594 if ((ptr = (SFRotationNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
3595 printf(
"JS_GetPrivate failed in SFRotationGetProperty.\n");
3600 if (JSVAL_IS_INT(
id)) {
3601 switch (JSVAL_TO_INT(
id)) {
3604 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
3606 "JS_NewDouble failed for %f in SFRotationGetProperty.\n",
3613 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
3615 "JS_NewDouble failed for %f in SFRotationGetProperty.\n",
3622 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
3624 "JS_NewDouble failed for %f in SFRotationGetProperty.\n",
3631 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
3633 "JS_NewDouble failed for %f in SFRotationGetProperty.\n",
3644SFRotationSetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp){
3645 JSObject *obj = *hobj.address();
3646 jsid iid = *hiid.address();
3647 jsval *vp = hvp.address();
3654 if (!JS_IdToValue(cx,iid,&
id)) {
3655 printf(
"JS_IdToValue failed in SFRotationSetProperty.\n");
3660 #ifdef JSVRMLCLASSESVERBOSE
3661 printf (
"start of SFRotationSetProperty\n");
3663 if(SM_method() == 2){
3665 if ((any = (AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
3666 printf(
"JS_GetPrivate failed in SFRotationProperty.\n");
3669 if(any->valueChanged)
3670 (*any->valueChanged)++;
3671 cc = any->v->sfrotation.c;
3673 SFRotationNative *ptr;
3675 if ((ptr = (SFRotationNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
3676 printf(
"JS_GetPrivate failed in SFRotationSetProperty.\n");
3679 ptr->valueChanged++;
3680 #ifdef JSVRMLCLASSESVERBOSE
3681 printf(
"SFRotationSetProperty: obj = %p, id = %d, valueChanged = %d\n",
3682 obj, JSVAL_TO_INT(
id), ptr->valueChanged);
3686 if (!JS_ConvertValue(cx, *vp, JSTYPE_NUMBER, &myv)) {
3687 printf(
"JS_ConvertValue failed in SFRotationSetProperty.\n");
3691 if (JSVAL_IS_INT(
id)) {
3692 switch (JSVAL_TO_INT(
id)) {
3694 cc[0] = (float) JSVAL_TO_DOUBLE(myv);
3697 cc[1] = (float) JSVAL_TO_DOUBLE(myv);
3700 cc[2] = (float) JSVAL_TO_DOUBLE(myv);
3703 cc[3] = (float) JSVAL_TO_DOUBLE(myv);
3719#define __2FNORMALIZE 8
3720JSBool SFVec2fGeneric( JSContext *cx, JSObject *obj,
3721 uintN argc, jsval *argv, jsval *rval,
int op) {
3723 JSObject *_paramObj, *_proto, *_retObj;
3728 float *cc, *cc2, cc3[2], cclhs[2];
3732 int SFParam = FALSE;
3733 int numParam = FALSE;
3736 int retSFVec2f = FALSE;
3737 int retNumeric = FALSE;
3746 if ((op==__2FADD)||(op==__2FDOT)||(op==__2FSUBT))SFParam=TRUE;
3747 if ((op==__2FDIVIDE)||(op==__2FMULT))numParam=TRUE;
3750 if ((op==__2FDOT)||(op==__2FLENGTH)) retNumeric = TRUE;
3751 retSFVec2f = (!retNumeric);
3755 param_isString = JSVAL_IS_STRING (*argv);
3758 if ((SFParam) || (numParam)) {
3760 if (!JSVAL_IS_NUMBER(argv[0])) {
3761 printf (
"SFVec2f param error - number expected\n");
3764 if (!JS_ValueToNumber(cx, argv[0], &d)) {
3765 printf(
"JS_ValueToNumber failed in SFVec2f.\n");
3771 if (param_isString) {
3772 _str = JS_ValueToString(cx, *argv);
3773 charString = JS_EncodeString(cx,_str);
3775 if (sscanf(charString,
"%lf %lf",
3776 &(pars[0]), &(pars[1])) != 2) {
3777 printf (
"conversion problem in SFVec2fGeneric\n");
3786 if (argv[0].isObject()) {
3788 if ((_vec2 = (AnyNative *)JS_GetPrivateFw(cx, JSVAL_TO_OBJECT(argv[0]))) == NULL) {
3789 printf(
"in SFVec2f, RHS was NOT native type \n");
3793 cc2 = _vec2->v->sfvec2f.c;
3799 SFVec2fNative *_vec2 = NULL;
3801 if (!JS_ConvertArguments(cx, argc, argv,
"o", &_paramObj)) {
3802 printf(
"JS_ConvertArguments failed in SFVec2f.\n");
3806 CHECK_CLASS(cx,_paramObj,argv,__FUNCTION__,SFVec2fClass)
3808 if ((_vec2 = (SFVec2fNative*)JS_GetPrivateFw(cx, _paramObj)) == NULL) {
3809 printf(
"JS_GetPrivate failed for _paramObj in SFVec2f.\n");
3819 if(SM_method() == 2){
3821 if ((_vec1 = (AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
3822 printf(
"JS_GetPrivate failed for obj in SFVec3fAdd.\n");
3825 cc = _vec1->v->sfvec2f.c;
3827 SFVec2fNative *_vec1 = NULL;
3828 if ((_vec1 = (SFVec2fNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
3829 printf(
"JS_GetPrivate failed for obj in SFVec2fAdd.\n");
3838 vecadd2f(cclhs,cc,cc2);
3841 vecscale2f(cclhs,cc,1.0/d);
3844 vecscale2f(cclhs,cc,d);
3847 vecdif2f(cclhs,cc,cc2);
3850 d = vecdot2f(cc,cc2);
3853 d = veclength2f(cc);
3856 vecnormal2f(cclhs,cc);
3864 if ((_proto = JS_GetPrototypeFw(cx, obj)) == NULL) {
3865 printf(
"JS_GetPrototype failed in SFVec2f.\n");
3869 JS_ConstructObjectFw(cx, &SFVec2fClass, _proto, NULL)) == NULL) {
3870 printf(
"JS_ConstructObject failed in SFVec2f.\n");
3873 *rval = OBJECT_TO_JSVAL(_retObj);
3874 if(SM_method() == 2){
3876 if ((any = (AnyNative*)JS_GetPrivateFw(cx, _retObj)) == NULL) {
3877 printf(
"JS_GetPrivate failed for _retObj in SFVec3f.\n");
3880 memcpy(any->v->sfvec2f.c,cclhs,2*
sizeof(
float));
3882 SFVec3fNative *_retNative;
3883 if ((_retNative = (SFVec3fNative*)JS_GetPrivateFw(cx, _retObj)) == NULL) {
3884 printf(
"JS_GetPrivate failed for _retObj in SFVec3f.\n");
3887 memcpy(_retNative->v.c,cclhs,2*
sizeof(
float));
3890 }
else if (retNumeric) {
3891 if (JS_NewNumberValue(cx,d,rval) == JS_FALSE) {
3892 printf(
"JS_NewDouble failed for %f in SFVec2f.\n",d);
3897 #ifdef JSVRMLCLASSESVERBOSE
3899 printf(
"SFVec2fgeneric: obj = %p, result = [%.9g, %.9g]\n",
3901 (_retNative->v).c[0], (_retNative->v).c[1]);
3904 printf(
"SFVec2fgeneric: obj = %p, result = %.9g\n",
3913SFVec2fAdd(JSContext *cx, uintN argc, jsval *vp) {
3914 JSObject *obj = JS_THIS_OBJECT(cx,vp);
3915 jsval *argv = JS_ARGV(cx,vp);
3917 JSBool retval = SFVec2fGeneric(cx, obj, argc, argv, &rval, __2FADD);
3918 JS_SET_RVAL(cx,vp,rval);
3924SFVec2fDivide(JSContext *cx, uintN argc, jsval *vp) {
3925 JSObject *obj = JS_THIS_OBJECT(cx,vp);
3926 jsval *argv = JS_ARGV(cx,vp);
3928 JSBool retval = SFVec2fGeneric(cx, obj, argc, argv, &rval, __2FDIVIDE);
3929 JS_SET_RVAL(cx,vp,rval);
3934SFVec2fMultiply(JSContext *cx, uintN argc, jsval *vp) {
3935 JSObject *obj = JS_THIS_OBJECT(cx,vp);
3936 jsval *argv = JS_ARGV(cx,vp);
3938 JSBool retval = SFVec2fGeneric(cx, obj, argc, argv, &rval, __2FMULT);
3939 JS_SET_RVAL(cx,vp,rval);
3945SFVec2fSubtract(JSContext *cx, uintN argc, jsval *vp) {
3946 JSObject *obj = JS_THIS_OBJECT(cx,vp);
3947 jsval *argv = JS_ARGV(cx,vp);
3949 JSBool retval = SFVec2fGeneric(cx, obj, argc, argv, &rval, __2FSUBT);
3950 JS_SET_RVAL(cx,vp,rval);
3956SFVec2fDot(JSContext *cx, uintN argc, jsval *vp) {
3957 JSObject *obj = JS_THIS_OBJECT(cx,vp);
3958 jsval *argv = JS_ARGV(cx,vp);
3960 JSBool retval = SFVec2fGeneric(cx, obj, argc, argv, &rval, __2FDOT);
3961 JS_SET_RVAL(cx,vp,rval);
3966SFVec2fLength(JSContext *cx, uintN argc, jsval *vp) {
3967 JSObject *obj = JS_THIS_OBJECT(cx,vp);
3968 jsval *argv = JS_ARGV(cx,vp);
3970 JSBool retval = SFVec2fGeneric(cx, obj, argc, argv, &rval, __2FLENGTH);
3971 JS_SET_RVAL(cx,vp,rval);
3977SFVec2fNormalize(JSContext *cx, uintN argc, jsval *vp) {
3978 JSObject *obj = JS_THIS_OBJECT(cx,vp);
3979 jsval *argv = JS_ARGV(cx,vp);
3981 JSBool retval = SFVec2fGeneric(cx, obj, argc, argv, &rval, __2FNORMALIZE);
3982 JS_SET_RVAL(cx,vp,rval);
3987SFVec2fToString(JSContext *cx, uintN argc, jsval *vp) {
3988 JSObject *obj = JS_THIS_OBJECT(cx,vp);
3989 jsval *argv = JS_ARGV(cx,vp);
3998 if ((ptr = (AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
3999 printf(
"JS_GetPrivate failed in SFVec2fToString.\n");
4002 cc = ptr->v->sfvec2f.c;
4005 if ((ptr = (SFVec2fNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
4006 printf(
"JS_GetPrivate failed in SFVec2fToString.\n");
4011 memset(buff, 0, STRING);
4012 sprintf(buff,
"%.9g %.9g",
4014 _str = JS_NewStringCopyZ(cx, buff);
4015 JS_SET_RVAL(cx,vp,STRING_TO_JSVAL(_str));
4021SFVec2fAssign(JSContext *cx, uintN argc, jsval *vp) {
4022 JSObject *obj = JS_THIS_OBJECT(cx,vp);
4023 jsval *argv = JS_ARGV(cx,vp);
4024 JSString *_id_jsstr;
4026 JSObject *_from_obj;
4031 if(SM_method() == 2){
4032 AnyNative *lhs, *rhs;
4033 if ((lhs = (AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
4034 printf(
"JS_GetPrivate failed for obj in SFVec3dAssign.\n");
4037 if (!(*vp).isObject())
4039 if ((rhs = (AnyNative *)JS_GetPrivateFw(cx, JSVAL_TO_OBJECT(*vp))) == NULL) {
4040 printf(
"JS_ConvertArguments failed in SFVec2fAssign. \n");
4043 AnyNativeAssign(lhs,rhs);
4045 SFVec2fNative *fptr, *ptr;
4047 if ((ptr = (SFVec2fNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
4048 printf(
"JS_GetPrivate failed for obj in SFVec2fAssign.\n");
4052 CHECK_CLASS(cx,obj,argv,__FUNCTION__,SFVec2fClass)
4054 if (JS_ConvertArguments(cx, argc, argv,
"oS", &_from_obj, &_id_jsstr) == JS_TRUE) {
4055 _id_str = JS_EncodeString(cx,_id_jsstr);
4058 printf(
"JS_ConvertArguments failed in SFVec2fAssign.\n");
4062 CHECK_CLASS(cx,_from_obj,argv,__FUNCTION__,SFVec2fClass)
4064 if ((fptr = (SFVec2fNative *)JS_GetPrivateFw(cx, _from_obj)) == NULL) {
4065 printf(
"JS_GetPrivate failed for _from_obj in SFVec2fAssign.\n");
4068 #ifdef JSVRMLCLASSESVERBOSE
4069 printf(
"SFVec2fAssign: obj = %p, id = \"%s\", from = %p\n",
4070 obj, _id_str, _from_obj);
4073 SFVec2fNativeAssign(ptr, fptr);
4075 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
4082SFVec2fConstr(JSContext *cx, uintN argc, jsval *vp) {
4083 JSObject *obj = JS_NewObject(cx,&SFVec2fClass,NULL,NULL);
4084 jsval *argv = JS_ARGV(cx,vp);
4091 if(SM_method() == 2){
4093 if((any = (AnyNative*)AnyNativeNew(FIELDTYPE_SFVec2f,NULL,NULL)) == NULL){
4094 printf(
"AnyfNativeNew failed in SFVec3fConstr.\n");
4097 if (!JS_SetPrivateFw(cx, obj, any)) {
4098 printf(
"JS_SetPrivate failed in SFVec2fConstr.\n");
4102 cc = any->v->sfvec2f.c;
4106 if ((ptr = (SFVec2fNative *) SFVec2fNativeNew()) == NULL) {
4107 printf(
"SFVec2fNativeNew failed in SFVec2fConstr.\n");
4115 if (!JS_SetPrivateFw(cx, obj, ptr)) {
4116 printf(
"JS_SetPrivate failed in SFVec2fConstr.\n");
4120 ptr->valueChanged = 1;
4124 cc[0] = (float) 0.0;
4125 cc[1] = (float) 0.0;
4127 if (!JS_ConvertArguments(cx, argc, argv,
"d d", &(pars[0]), &(pars[1]))) {
4128 printf(
"JS_ConvertArguments failed in SFVec2fConstr.\n");
4131 cc[0] = (float) pars[0];
4132 cc[1] = (float) pars[1];
4134 #ifdef JSVRMLCLASSESVERBOSE
4135 printf(
"SFVec2fConstr: obj = %p, %u args, %f %f\n",
4137 (ptr->v).c[0], (ptr->v).c[1]);
4141 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
4148SFVec2fGetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp){
4149 JSObject *obj = *hobj.address();
4150 jsid iid = *hiid.address();
4151 jsval *vp = hvp.address();
4157 if (!JS_IdToValue(cx,iid,&
id)) {
4158 printf(
"JS_IdToValue failed in SFVec2fGetProperty.\n");
4165 if ((any = (AnyNative *)JS_GetPrivateFw(cx,obj)) == NULL) {
4166 printf(
"JS_GetPrivate failed in SFVec2fGetProperty.\n");
4169 cc = any->v->sfvec2f.c;
4173 if ((ptr = (SFVec2fNative *)JS_GetPrivateFw(cx,obj)) == NULL) {
4174 printf(
"JS_GetPrivate failed in SFVec2fGetProperty.\n");
4179 if (JSVAL_IS_INT(
id)) {
4180 switch (JSVAL_TO_INT(
id)) {
4183 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
4185 "JS_NewDouble failed for %f in SFVec2fGetProperty.\n",
4192 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
4194 "JS_NewDouble failed for %f in SFVec2fGetProperty.\n",
4205SFVec2fSetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp){
4206 JSObject *obj = *hobj.address();
4207 jsid iid = *hiid.address();
4208 jsval *vp = hvp.address();
4215 if (!JS_IdToValue(cx,iid,&
id)) {
4216 printf(
"JS_IdToValue failed in SFVec2fSetProperty.\n");
4221 if(SM_method() == 2){
4223 if ((any = (AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
4224 printf(
"JS_GetPrivate failed in SFVec2fSetProperty.\n");
4227 if(any->valueChanged)
4228 (*any->valueChanged)++;
4229 cc = any->v->sfvec2f.c;
4233 if ((ptr = (SFVec2fNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
4234 printf(
"JS_GetPrivate failed in SFVec2fSetProperty.\n");
4237 ptr->valueChanged++;
4238 #ifdef JSVRMLCLASSESVERBOSE
4239 printf(
"SFVec2fSetProperty: obj = %p, id = %d, valueChanged = %d\n",
4240 obj, JSVAL_TO_INT(
id), ptr->valueChanged);
4244 if (!JS_ConvertValue(cx, *vp, JSTYPE_NUMBER, &myv)) {
4245 printf(
"JS_ConvertValue failed in SFVec2fSetProperty.\n");
4249 if (JSVAL_IS_INT(
id)) {
4250 switch (JSVAL_TO_INT(
id)) {
4252 cc[0] = (float) JSVAL_TO_DOUBLE(myv);
4255 cc[1] = (float) JSVAL_TO_DOUBLE(myv);
4273#define __3FNORMALIZE 8
4277JSBool SFVec3fGeneric( JSContext *cx, JSObject *obj,
4278 uintN argc, jsval *argv, jsval *rval,
int op) {
4279 JSObject *_paramObj, *_proto, *_retObj;
4286 float *cc, *cc2, cc3[3], cclhs[3];
4290 int SFParam = FALSE;
4291 int numParam = FALSE;
4294 int retSFVec3f = FALSE;
4295 int retNumeric = FALSE;
4303 #ifdef JSVRMLCLASSESVERBOSE
4304 printf (
"SFVec3fGeneric\n");
4308 if ((op==__3FADD)||(op==__3FDOT)||(op==__3FCROSS)||(op==__3FSUBT))SFParam=TRUE;
4309 if ((op==__3FDIVIDE)||(op==__3FMULT))numParam=TRUE;
4312 if ((op==__3FDOT)||(op==__3FLENGTH)) retNumeric = TRUE;
4313 retSFVec3f = (!retNumeric);
4317 param_isString = JSVAL_IS_STRING (*argv);
4320 if ((SFParam) || (numParam)) {
4322 if (!JSVAL_IS_NUMBER(argv[0])) {
4323 printf (
"SFVec3f param error - number expected\n");
4326 if (!JS_ValueToNumber(cx, argv[0], &d)) {
4327 printf(
"JS_ValueToNumber failed in SFVec3f.\n");
4333 if (param_isString) {
4334 _str = JS_ValueToString(cx, *argv);
4335 charString = JS_EncodeString(cx,_str);
4336 if (sscanf(charString,
"%lf %lf %lf",
4337 &(pars[0]), &(pars[1]), &(pars[2])) != 3) {
4338 printf (
"conversion problem in SFVec3fGeneric\n");
4347 if(SM_method() == 2){
4348 if (argv[0].isObject()) {
4350 if ((_vec2 = (AnyNative *)JS_GetPrivateFw(cx, JSVAL_TO_OBJECT(argv[0]))) == NULL) {
4351 printf(
"in SFVec3d, RHS was NOT native type \n");
4355 cc2 = _vec2->v->sfvec3f.c;
4361 SFVec3fNative *_vec2;
4362 if (!JS_ConvertArguments(cx, argc, argv,
"o", &_paramObj)) {
4363 printf(
"JS_ConvertArguments failed in SFVec3f.\n");
4367 CHECK_CLASS(cx,_paramObj,argv,__FUNCTION__,SFVec3fClass)
4370 if ((_vec2 = (SFVec3fNative*)JS_GetPrivateFw(cx, _paramObj)) == NULL) {
4371 printf(
"JS_GetPrivate failed for _paramObj in SFVec3f.\n");
4381 if(SM_method() == 2){
4383 if ((_vec1 = (AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
4384 printf(
"JS_GetPrivate failed for obj in SFVec3fAdd.\n");
4387 cc = _vec1->v->sfvec3f.c;
4389 SFVec3fNative *_vec1;
4390 if ((_vec1 = (SFVec3fNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
4391 printf(
"JS_GetPrivate failed for obj in SFVec3fAdd.\n");
4397 #ifdef JSVRMLCLASSESVERBOSE
4398 printf (
"SFVec3f generic, vec2 %f %f %f\n",pars[0],pars[1],pars[2]);
4404 vecadd3f(cclhs,cc,cc2);
4407 vecscale3f(cclhs,cc,1.0/d);
4410 vecscale3f(cclhs,cc,d);
4413 vecdif3f(cclhs,cc,cc2);
4416 d = vecdot3f(cc,cc2);
4419 veccross3f(cclhs,cc,cc2);
4422 d = veclength3f(cc);
4425 vecnormalize3f(cclhs,cc);
4428 vecnegate3f(cclhs,cc);
4431 printf (
"woops... %d\n",op);
4435 #ifdef JSVRMLCLASSESVERBOSE
4436 printf (
"past calcs\n");
4441 #ifdef JSVRMLCLASSESVERBOSE
4442 printf (
"returning SFVec3f\n");
4444 if ((_proto = JS_GetPrototypeFw(cx, obj)) == NULL) {
4445 printf(
"JS_GetPrototype failed in SFVec3f.\n");
4449 JS_ConstructObjectFw(cx, &SFVec3fClass, _proto, NULL)) == NULL) {
4450 printf(
"JS_ConstructObject failed in SFVec3f.\n");
4453 *rval = OBJECT_TO_JSVAL(_retObj);
4454 if(SM_method() == 2){
4456 if ((any = (AnyNative*)JS_GetPrivateFw(cx, _retObj)) == NULL) {
4457 printf(
"JS_GetPrivate failed for _retObj in SFVec3f.\n");
4460 memcpy(any->v->sfvec3f.c,cclhs,3*
sizeof(
float));
4462 SFVec3fNative *_retNative;
4463 if ((_retNative = (SFVec3fNative*)JS_GetPrivateFw(cx, _retObj)) == NULL) {
4464 printf(
"JS_GetPrivate failed for _retObj in SFVec3f.\n");
4467 memcpy(_retNative->v.c,cclhs,3*
sizeof(
float));
4469 }
else if (retNumeric) {
4470 if (JS_NewNumberValue(cx,d,rval) == JS_FALSE) {
4471 printf(
"JS_NewDouble failed for %f in SFVec3f.\n",d);
4475 #ifdef JSVRMLCLASSESVERBOSE
4477 printf(
"SFVec3fgeneric: obj = %p, result = [%.9g, %.9g, %.9g]\n",
4479 (_retNative->v).c[0], (_retNative->v).c[1],
4480 (_retNative->v).c[2]);
4483 printf(
"SFVec2fgeneric: obj = %p, result = %.9g\n",
4491SFVec3fAdd(JSContext *cx, uintN argc, jsval *vp) {
4492 JSObject *obj = JS_THIS_OBJECT(cx,vp);
4493 jsval *argv = JS_ARGV(cx,vp);
4495 JSBool retval = SFVec3fGeneric(cx, obj, argc, argv, &rval, __3FADD);
4496 JS_SET_RVAL(cx,vp,rval);
4501SFVec3fCross(JSContext *cx, uintN argc, jsval *vp) {
4502 JSObject *obj = JS_THIS_OBJECT(cx,vp);
4503 jsval *argv = JS_ARGV(cx,vp);
4505 JSBool retval = SFVec3fGeneric(cx, obj, argc, argv, &rval, __3FCROSS);
4506 JS_SET_RVAL(cx,vp,rval);
4511SFVec3fDivide(JSContext *cx, uintN argc, jsval *vp) {
4512 JSObject *obj = JS_THIS_OBJECT(cx,vp);
4513 jsval *argv = JS_ARGV(cx,vp);
4515 JSBool retval = SFVec3fGeneric(cx, obj, argc, argv, &rval, __3FDIVIDE);
4516 JS_SET_RVAL(cx,vp,rval);
4521SFVec3fDot(JSContext *cx, uintN argc, jsval *vp) {
4522 JSObject *obj = JS_THIS_OBJECT(cx,vp);
4523 jsval *argv = JS_ARGV(cx,vp);
4525 JSBool retval = SFVec3fGeneric(cx, obj, argc, argv, &rval, __3FDOT);
4526 JS_SET_RVAL(cx,vp,rval);
4531SFVec3fLength(JSContext *cx, uintN argc, jsval *vp) {
4532 JSObject *obj = JS_THIS_OBJECT(cx,vp);
4533 jsval *argv = JS_ARGV(cx,vp);
4535 JSBool retval = SFVec3fGeneric(cx, obj, argc, argv, &rval, __3FLENGTH);
4536 JS_SET_RVAL(cx,vp,rval);
4542SFVec3fMultiply(JSContext *cx, uintN argc, jsval *vp) {
4543 JSObject *obj = JS_THIS_OBJECT(cx,vp);
4544 jsval *argv = JS_ARGV(cx,vp);
4546 JSBool retval = SFVec3fGeneric(cx, obj, argc, argv, &rval, __3FMULT);
4547 JS_SET_RVAL(cx,vp,rval);
4553SFVec3fNegate(JSContext *cx, uintN argc, jsval *vp) {
4554 JSObject *obj = JS_THIS_OBJECT(cx,vp);
4555 jsval *argv = JS_ARGV(cx,vp);
4557 JSBool retval = SFVec3fGeneric(cx, obj, argc, argv, &rval, __3FNEGATE);
4558 JS_SET_RVAL(cx,vp,rval);
4563SFVec3fNormalize(JSContext *cx, uintN argc, jsval *vp) {
4564 JSObject *obj = JS_THIS_OBJECT(cx,vp);
4565 jsval *argv = JS_ARGV(cx,vp);
4567 JSBool retval = SFVec3fGeneric(cx, obj, argc, argv, &rval, __3FNORMALIZE);
4568 JS_SET_RVAL(cx,vp,rval);
4573SFVec3fSubtract(JSContext *cx, uintN argc, jsval *vp) {
4574 JSObject *obj = JS_THIS_OBJECT(cx,vp);
4575 jsval *argv = JS_ARGV(cx,vp);
4577 JSBool retval = SFVec3fGeneric(cx, obj, argc, argv, &rval, __3FSUBT);
4578 JS_SET_RVAL(cx,vp,rval);
4583SFVec3fToString(JSContext *cx, uintN argc, jsval *vp) {
4584 JSObject *obj = JS_THIS_OBJECT(cx,vp);
4585 jsval *argv = JS_ARGV(cx,vp);
4595 if ((ptr = (AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
4596 printf(
"JS_GetPrivate failed in SFVec3fToString.\n");
4599 cc = ptr->v->sfvec3f.c;
4602 if ((ptr = (SFVec3fNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
4603 printf(
"JS_GetPrivate failed in SFVec3fToString.\n");
4608 memset(buff, 0, STRING);
4609 sprintf(buff,
"%.9g %.9g %.9g",
4610 cc[0], cc[1], cc[2]);
4611 _str = JS_NewStringCopyZ(cx, buff);
4613 JS_SET_RVAL(cx,vp,STRING_TO_JSVAL(_str));
4615 #ifdef JSVRMLCLASSESVERBOSE
4616 printf (
"SFVec3fToString, string is :%s:\n",buff);
4624SFVec3fAssign(JSContext *cx, uintN argc, jsval *vp) {
4625 JSObject *obj = JS_THIS_OBJECT(cx,vp);
4626 jsval *argv = JS_ARGV(cx,vp);
4627 JSString *_id_jsstr;
4628 JSObject *_from_obj;
4634 #ifdef JSVRMLCLASSESVERBOSE
4635 printf (
"start of SFVec3fAssign\n");
4638 if(SM_method() == 2){
4639 AnyNative *lhs, *rhs;
4640 if ((lhs = (AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
4641 printf(
"JS_GetPrivate failed for obj in SFVec3dAssign.\n");
4644 if (!(*vp).isObject())
4646 if ((rhs = (AnyNative *)JS_GetPrivateFw(cx, JSVAL_TO_OBJECT(*vp))) == NULL) {
4647 printf(
"JS_ConvertArguments failed in SFVec3fAssign. \n");
4650 AnyNativeAssign(lhs,rhs);
4652 SFVec3fNative *fptr, *ptr;
4653 if ((ptr = (SFVec3fNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
4654 printf(
"JS_GetPrivate failed for obj in SFVec3fAssign.\n");
4658 CHECK_CLASS(cx,obj,argv,__FUNCTION__,SFVec3fClass)
4660 if (JS_ConvertArguments(cx, argc, argv,
"oS", &_from_obj, &_id_jsstr)) {
4661 _id_str = JS_EncodeString(cx,_id_jsstr);
4663 printf(
"JS_ConvertArguments failed in SFVec3fAssign.\n");
4667 CHECK_CLASS(cx,_from_obj,argv,__FUNCTION__,SFVec3fClass)
4669 if ((fptr = (SFVec3fNative *)JS_GetPrivateFw(cx, _from_obj)) == NULL) {
4670 printf(
"JS_GetPrivate failed for _from_obj in SFVec3fAssign.\n");
4673 #ifdef JSVRMLCLASSESVERBOSE
4674 printf(
"SFVec3fAssign: obj = %p, id = \"%s\", from = %p\n",
4675 obj, _id_str, _from_obj);
4678 SFVec3fNativeAssign(ptr, fptr);
4680 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
4682 #ifdef JSVRMLCLASSESVERBOSE
4683 printf (
"end of SFVec3fAssign\n");
4690SFVec3fConstr(JSContext *cx, uintN argc, jsval *vp) {
4691 JSObject *obj = JS_NewObject(cx,&SFVec3fClass,NULL,NULL);
4692 jsval *argv = JS_ARGV(cx,vp);
4696 #ifdef JSVRMLCLASSESVERBOSE
4697 printf (
"start of SFVec3fConstr\n");
4701 if(SM_method() == 2){
4703 if((any = (AnyNative*)AnyNativeNew(FIELDTYPE_SFVec3f,NULL,NULL)) == NULL){
4704 printf(
"AnyfNativeNew failed in SFVec3fConstr.\n");
4707 if (!JS_SetPrivateFw(cx, obj, any)) {
4708 printf(
"JS_SetPrivate failed in SFVec3fConstr.\n");
4711 cc = any->v->sfvec3f.c;
4714 if ((ptr = (SFVec3fNative *) SFVec3fNativeNew()) == NULL) {
4715 printf(
"SFVec3fNativeNew failed in SFVec3fConstr.\n");
4723 if (!JS_SetPrivateFw(cx, obj, ptr)) {
4724 printf(
"JS_SetPrivate failed in SFVec3fConstr.\n");
4727 ptr->valueChanged = 1;
4734 }
else if(argc == 1){
4735 if(SM_method() == 2){
4737 if (argv[0].isObject()) {
4739 if ((rhs = (AnyNative *)JS_GetPrivateFw(cx, JSVAL_TO_OBJECT(argv[0]))) != NULL) {
4741 int rhstype = rhs->type;
4744 case FIELDTYPE_SFVec3f:
4745 veccopy3f(cc,anyv->sfvec3f.c);
break;
4746 case FIELDTYPE_SFVec3d:
4747 double2float(cc,anyv->sfvec3d.c,3);
break;
4748 case FIELDTYPE_SFRotation:
4749 veccopy3f(cc,anyv->sfrotation.c);
break;
4751 vecset3f(cc,0.0f,0.0f,0.0f);
4752 ConsoleMessage(
"new SFVec3f( obj ) doesn't handle obj type %d\n",rhstype);
4761 if (!JS_ConvertArguments(cx, argc, argv,
"d d d",
4762 &(pars[0]), &(pars[1]), &(pars[2]))) {
4763 printf(
"JS_ConvertArguments failed in SFVec3fConstr.\n");
4766 cc[0] = (float) pars[0];
4767 cc[1] = (float) pars[1];
4768 cc[2] = (float) pars[2];
4770 #ifdef JSVRMLCLASSESVERBOSE
4771 printf(
"SFVec3fConstr: obj = %p, %u args, %f %f %f\n",
4773 cc[0], cc[1], cc[2]);
4777 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
4782SFVec3fGetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp){
4783 JSObject *obj = *hobj.address();
4784 jsid iid = *hiid.address();
4785 jsval *vp = hvp.address();
4789 #ifdef JSVRMLCLASSESVERBOSE
4795 if (!JS_IdToValue(cx,iid,&
id)) {
4796 printf(
"JS_IdToValue failed in SFVec3fGetProperty.\n");
4800 #ifdef JSVRMLCLASSESVERBOSE
4808 _idStr = JS_ValueToString(cx, *vp);
4810 _id_c = JS_GetStringBytes(_idStr);
4812 _id_c = JS_EncodeString(cx,_idStr);
4817 if ((any = (AnyNative *)JS_GetPrivateFw(cx,obj)) == NULL) {
4818 printf(
"JS_GetPrivate failed in SFVec3fGetProperty.\n");
4821 cc = any->v->sfvec3f.c;
4824 if ((ptr = (SFVec3fNative *)JS_GetPrivateFw(cx,obj)) == NULL) {
4825 printf(
"JS_GetPrivate failed in SFVec3fGetProperty.\n");
4830 if (JSVAL_IS_INT(
id)) {
4831 switch (JSVAL_TO_INT(
id)) {
4834 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
4836 "JS_NewDouble failed for %f in SFVec3fGetProperty.\n",
4843 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
4845 "JS_NewDouble failed for %f in SFVec3fGetProperty.\n",
4852 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
4854 "JS_NewDouble failed for %f in SFVec3fGetProperty.\n",
4861 #ifdef JSVRMLCLASSESVERBOSE
4862 printf (
"SFVec3fGetProperty, id is NOT an int...\n");
4870SFVec3fSetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp){
4871 JSObject *obj = *hobj.address();
4872 jsid iid = *hiid.address();
4873 jsval *vp = hvp.address();
4879 if (!JS_IdToValue(cx,iid,&
id)) {
4880 printf(
"JS_IdToValue failed in SFVec3fSetProperty.\n");
4885 if(SM_method() == 2){
4887 if ((any = (AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
4888 printf(
"JS_GetPrivate failed in SFVec3fSetProperty.\n");
4891 if(any->valueChanged)
4892 (*any->valueChanged)++;
4893 cc = any->v->sfvec3f.c;
4896 if ((ptr = (SFVec3fNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
4897 printf(
"JS_GetPrivate failed in SFVec3fSetProperty.\n");
4900 ptr->valueChanged++;
4901 #ifdef JSVRMLCLASSESVERBOSE
4902 printf(
"SFVec3fSetProperty: obj = %p, id = %d, valueChanged = %d\n",
4903 obj, JSVAL_TO_INT(
id), ptr->valueChanged);
4907 if (!JS_ConvertValue(cx, *vp, JSTYPE_NUMBER, &myv)) {
4908 printf(
"JS_ConvertValue failed in SFVec3fSetProperty.\n");
4912 if (JSVAL_IS_INT(
id)) {
4913 switch (JSVAL_TO_INT(
id)) {
4915 cc[0] = (float) JSVAL_TO_DOUBLE(myv);
4918 cc[1] = (float) JSVAL_TO_DOUBLE(myv);
4921 cc[2] = (float) JSVAL_TO_DOUBLE(myv);
4931JSBool SFVec2dGeneric(JSContext* cx, JSObject* obj,
4932 uintN argc, jsval* argv, jsval* rval,
int op) {
4934 JSObject* _paramObj, * _proto, * _retObj;
4939 double* cc, * cc2, cc3[2], cclhs[2];
4943 int SFParam = FALSE;
4944 int numParam = FALSE;
4947 int retSFVec2d = FALSE;
4948 int retNumeric = FALSE;
4957 if ((op == __2FADD) || (op == __2FDOT) || (op == __2FSUBT))SFParam = TRUE;
4958 if ((op == __2FDIVIDE) || (op == __2FMULT))numParam = TRUE;
4961 if ((op == __2FDOT) || (op == __2FLENGTH)) retNumeric = TRUE;
4962 retSFVec2d = (!retNumeric);
4966 param_isString = JSVAL_IS_STRING(*argv);
4969 if ((SFParam) || (numParam)) {
4971 if (!JSVAL_IS_NUMBER(argv[0])) {
4972 printf(
"SFVec2d param error - number expected\n");
4975 if (!JS_ValueToNumber(cx, argv[0], &d)) {
4976 printf(
"JS_ValueToNumber failed in SFVec2d.\n");
4983 if (param_isString) {
4984 _str = JS_ValueToString(cx, *argv);
4985 charString = JS_EncodeString(cx, _str);
4987 if (sscanf(charString,
"%lf %lf",
4988 &(pars[0]), &(pars[1])) != 2) {
4989 printf(
"conversion problem in SFVec2dGeneric\n");
4998 if (SM_method() == 2) {
4999 if (argv[0].isObject()) {
5001 if ((_vec2 = (AnyNative*)JS_GetPrivateFw(cx, JSVAL_TO_OBJECT(argv[0]))) == NULL) {
5002 printf(
"in SFVec2d, RHS was NOT native type \n");
5006 cc2 = _vec2->v->sfvec2d.c;
5014 SFVec2dNative* _vec2 = NULL;
5016 if (!JS_ConvertArguments(cx, argc, argv,
"o", &_paramObj)) {
5017 printf(
"JS_ConvertArguments failed in SFVec2d.\n");
5021 CHECK_CLASS(cx, _paramObj, argv, __FUNCTION__, SFVec2dClass)
5023 if ((_vec2 = (SFVec2dNative*)JS_GetPrivateFw(cx, _paramObj)) == NULL) {
5024 printf(
"JS_GetPrivate failed for _paramObj in SFVec2d.\n");
5034 if (SM_method() == 2) {
5036 if ((_vec1 = (AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
5037 printf(
"JS_GetPrivate failed for obj in SFVec3fAdd.\n");
5040 cc = _vec1->v->sfvec2d.c;
5043 SFVec2dNative* _vec1 = NULL;
5044 if ((_vec1 = (SFVec2dNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
5045 printf(
"JS_GetPrivate failed for obj in SFVec2dAdd.\n");
5054 vecadd2d(cclhs, cc, cc2);
5057 vecscale2d(cclhs, cc, 1.0 / d);
5060 vecscale2d(cclhs, cc, d);
5063 vecdif2d(cclhs, cc, cc2);
5066 d = vecdot2d(cc, cc2);
5069 d = veclength2d(cc);
5072 vecnormal2d(cclhs, cc);
5080 if ((_proto = JS_GetPrototypeFw(cx, obj)) == NULL) {
5081 printf(
"JS_GetPrototype failed in SFVec2d.\n");
5085 JS_ConstructObjectFw(cx, &SFVec2dClass, _proto, NULL)) == NULL) {
5086 printf(
"JS_ConstructObject failed in SFVec2d.\n");
5089 *rval = OBJECT_TO_JSVAL(_retObj);
5090 if (SM_method() == 2) {
5092 if ((any = (AnyNative*)JS_GetPrivateFw(cx, _retObj)) == NULL) {
5093 printf(
"JS_GetPrivate failed for _retObj in SFVec3f.\n");
5096 memcpy(any->v->sfvec2d.c, cclhs, 2 *
sizeof(
float));
5099 SFVec3fNative* _retNative;
5100 if ((_retNative = (SFVec3fNative*)JS_GetPrivateFw(cx, _retObj)) == NULL) {
5101 printf(
"JS_GetPrivate failed for _retObj in SFVec3f.\n");
5104 memcpy(_retNative->v.c, cclhs, 2 *
sizeof(
float));
5108 else if (retNumeric) {
5109 if (JS_NewNumberValue(cx, d, rval) == JS_FALSE) {
5110 printf(
"JS_NewDouble failed for %f in SFVec2d.\n", d);
5115#ifdef JSVRMLCLASSESVERBOSE
5117 printf(
"SFVec2dgeneric: obj = %p, result = [%.9g, %.9g]\n",
5119 (_retNative->v).c[0], (_retNative->v).c[1]);
5122 printf(
"SFVec2dgeneric: obj = %p, result = %.9g\n",
5131SFVec2dAdd(JSContext* cx, uintN argc, jsval* vp) {
5132 JSObject* obj = JS_THIS_OBJECT(cx, vp);
5133 jsval* argv = JS_ARGV(cx, vp);
5135 JSBool retval = SFVec2dGeneric(cx, obj, argc, argv, &rval, __2FADD);
5136 JS_SET_RVAL(cx, vp, rval);
5142SFVec2dDivide(JSContext* cx, uintN argc, jsval* vp) {
5143 JSObject* obj = JS_THIS_OBJECT(cx, vp);
5144 jsval* argv = JS_ARGV(cx, vp);
5146 JSBool retval = SFVec2dGeneric(cx, obj, argc, argv, &rval, __2FDIVIDE);
5147 JS_SET_RVAL(cx, vp, rval);
5152SFVec2dMultiply(JSContext* cx, uintN argc, jsval* vp) {
5153 JSObject* obj = JS_THIS_OBJECT(cx, vp);
5154 jsval* argv = JS_ARGV(cx, vp);
5156 JSBool retval = SFVec2dGeneric(cx, obj, argc, argv, &rval, __2FMULT);
5157 JS_SET_RVAL(cx, vp, rval);
5163SFVec2dSubtract(JSContext* cx, uintN argc, jsval* vp) {
5164 JSObject* obj = JS_THIS_OBJECT(cx, vp);
5165 jsval* argv = JS_ARGV(cx, vp);
5167 JSBool retval = SFVec2dGeneric(cx, obj, argc, argv, &rval, __2FSUBT);
5168 JS_SET_RVAL(cx, vp, rval);
5174SFVec2dDot(JSContext* cx, uintN argc, jsval* vp) {
5175 JSObject* obj = JS_THIS_OBJECT(cx, vp);
5176 jsval* argv = JS_ARGV(cx, vp);
5178 JSBool retval = SFVec2dGeneric(cx, obj, argc, argv, &rval, __2FDOT);
5179 JS_SET_RVAL(cx, vp, rval);
5184SFVec2dLength(JSContext* cx, uintN argc, jsval* vp) {
5185 JSObject* obj = JS_THIS_OBJECT(cx, vp);
5186 jsval* argv = JS_ARGV(cx, vp);
5188 JSBool retval = SFVec2dGeneric(cx, obj, argc, argv, &rval, __2FLENGTH);
5189 JS_SET_RVAL(cx, vp, rval);
5195SFVec2dNormalize(JSContext* cx, uintN argc, jsval* vp) {
5196 JSObject* obj = JS_THIS_OBJECT(cx, vp);
5197 jsval* argv = JS_ARGV(cx, vp);
5199 JSBool retval = SFVec2dGeneric(cx, obj, argc, argv, &rval, __2FNORMALIZE);
5200 JS_SET_RVAL(cx, vp, rval);
5205SFVec2dToString(JSContext* cx, uintN argc, jsval* vp) {
5206 JSObject* obj = JS_THIS_OBJECT(cx, vp);
5207 jsval* argv = JS_ARGV(cx, vp);
5214 if (SM_method() == 2) {
5216 if ((ptr = (AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
5217 printf(
"JS_GetPrivate failed in SFVec2dToString.\n");
5220 cc = ptr->v->sfvec2d.c;
5224 if ((ptr = (SFVec2dNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
5225 printf(
"JS_GetPrivate failed in SFVec2dToString.\n");
5230 memset(buff, 0, STRING);
5231 sprintf(buff,
"%.9g %.9g",
5233 _str = JS_NewStringCopyZ(cx, buff);
5234 JS_SET_RVAL(cx, vp, STRING_TO_JSVAL(_str));
5240SFVec2dAssign(JSContext* cx, uintN argc, jsval* vp) {
5241 JSObject* obj = JS_THIS_OBJECT(cx, vp);
5242 jsval* argv = JS_ARGV(cx, vp);
5243 JSString* _id_jsstr;
5245 JSObject* _from_obj;
5250 if (SM_method() == 2) {
5251 AnyNative* lhs, * rhs;
5252 if ((lhs = (AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
5253 printf(
"JS_GetPrivate failed for obj in SFVec3dAssign.\n");
5256 if (!(*vp).isObject())
5258 if ((rhs = (AnyNative*)JS_GetPrivateFw(cx, JSVAL_TO_OBJECT(*vp))) == NULL) {
5259 printf(
"JS_ConvertArguments failed in SFVec2dAssign. \n");
5262 AnyNativeAssign(lhs, rhs);
5265 SFVec2dNative* fptr, * ptr;
5267 if ((ptr = (SFVec2dNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
5268 printf(
"JS_GetPrivate failed for obj in SFVec2dAssign.\n");
5272 CHECK_CLASS(cx, obj, argv, __FUNCTION__, SFVec2dClass)
5274 if (JS_ConvertArguments(cx, argc, argv,
"oS", &_from_obj, &_id_jsstr) == JS_TRUE) {
5275 _id_str = JS_EncodeString(cx, _id_jsstr);
5279 printf(
"JS_ConvertArguments failed in SFVec2dAssign.\n");
5283 CHECK_CLASS(cx, _from_obj, argv, __FUNCTION__, SFVec2dClass)
5285 if ((fptr = (SFVec2dNative*)JS_GetPrivateFw(cx, _from_obj)) == NULL) {
5286 printf(
"JS_GetPrivate failed for _from_obj in SFVec2dAssign.\n");
5289#ifdef JSVRMLCLASSESVERBOSE
5290 printf(
"SFVec2dAssign: obj = %p, id = \"%s\", from = %p\n",
5291 obj, _id_str, _from_obj);
5294 SFVec2fNativeAssign(ptr, fptr);
5296 JS_SET_RVAL(cx, vp, OBJECT_TO_JSVAL(obj));
5303SFVec2dConstr(JSContext* cx, uintN argc, jsval* vp) {
5304 JSObject* obj = JS_NewObject(cx, &SFVec2dClass, NULL, NULL);
5305 jsval* argv = JS_ARGV(cx, vp);
5312 if (SM_method() == 2) {
5314 if ((any = (AnyNative*)AnyNativeNew(FIELDTYPE_SFVec2d, NULL, NULL)) == NULL) {
5315 printf(
"AnyfNativeNew failed in SFVec3fConstr.\n");
5318 if (!JS_SetPrivateFw(cx, obj, any)) {
5319 printf(
"JS_SetPrivate failed in SFVec2dConstr.\n");
5323 cc = any->v->sfvec2d.c;
5328 if ((ptr = (SFVec2dNative*)SFVec2dNativeNew()) == NULL) {
5329 printf(
"SFVec2dNativeNew failed in SFVec2dConstr.\n");
5337 if (!JS_SetPrivateFw(cx, obj, ptr)) {
5338 printf(
"JS_SetPrivate failed in SFVec2dConstr.\n");
5342 ptr->valueChanged = 1;
5350 if (!JS_ConvertArguments(cx, argc, argv,
"d d", &(pars[0]), &(pars[1]))) {
5351 printf(
"JS_ConvertArguments failed in SFVec2dConstr.\n");
5357#ifdef JSVRMLCLASSESVERBOSE
5358 printf(
"SFVec2dConstr: obj = %p, %u args, %f %f\n",
5360 (ptr->v).c[0], (ptr->v).c[1]);
5364 JS_SET_RVAL(cx, vp, OBJECT_TO_JSVAL(obj));
5371SFVec2dGetProperty(JSContext* cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp) {
5372 JSObject* obj = *hobj.address();
5373 jsid iid = *hiid.address();
5374 jsval* vp = hvp.address();
5380 if (!JS_IdToValue(cx, iid, &
id)) {
5381 printf(
"JS_IdToValue failed in SFVec2dGetProperty.\n");
5386 if (SM_method() == 2) {
5388 if ((any = (AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
5389 printf(
"JS_GetPrivate failed in SFVec2dGetProperty.\n");
5392 cc = any->v->sfvec2d.c;
5397 if ((ptr = (SFVec2dNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
5398 printf(
"JS_GetPrivate failed in SFVec2dGetProperty.\n");
5403 if (JSVAL_IS_INT(
id)) {
5404 switch (JSVAL_TO_INT(
id)) {
5407 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
5409 "JS_NewDouble failed for %f in SFVec2dGetProperty.\n",
5416 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
5418 "JS_NewDouble failed for %f in SFVec2dGetProperty.\n",
5429SFVec2dSetProperty(JSContext* cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp) {
5430 JSObject* obj = *hobj.address();
5431 jsid iid = *hiid.address();
5432 jsval* vp = hvp.address();
5439 if (!JS_IdToValue(cx, iid, &
id)) {
5440 printf(
"JS_IdToValue failed in SFVec2dSetProperty.\n");
5445 if (SM_method() == 2) {
5447 if ((any = (AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
5448 printf(
"JS_GetPrivate failed in SFVec2dSetProperty.\n");
5451 if (any->valueChanged)
5452 (*any->valueChanged)++;
5453 cc = any->v->sfvec2d.c;
5458 if ((ptr = (SFVec2dNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
5459 printf(
"JS_GetPrivate failed in SFVec2dSetProperty.\n");
5462 ptr->valueChanged++;
5463#ifdef JSVRMLCLASSESVERBOSE
5464 printf(
"SFVec2dSetProperty: obj = %p, id = %d, valueChanged = %d\n",
5465 obj, JSVAL_TO_INT(
id), ptr->valueChanged);
5469 if (!JS_ConvertValue(cx, *vp, JSTYPE_NUMBER, &myv)) {
5470 printf(
"JS_ConvertValue failed in SFVec2dSetProperty.\n");
5474 if (JSVAL_IS_INT(
id)) {
5475 switch (JSVAL_TO_INT(
id)) {
5477 cc[0] = (float)JSVAL_TO_DOUBLE(myv);
5480 cc[1] = (float)JSVAL_TO_DOUBLE(myv);
5503JSBool SFVec3dGeneric( JSContext *cx, JSObject *obj,
5504 uintN argc, jsval *argv, jsval *rval,
int op) {
5505 JSObject *_paramObj, *_proto, *_retObj;
5511 double *cc, *cc2, cc3[3], cclhs[3];
5516 int SFParam = FALSE;
5517 int numParam = FALSE;
5520 int retSFVec3d = FALSE;
5521 int retNumeric = FALSE;
5530 if ((op==__3FADD)||(op==__3FDOT)||(op==__3FCROSS)||(op==__3FSUBT))SFParam=TRUE;
5531 if ((op==__3FDIVIDE)||(op==__3FMULT))numParam=TRUE;
5534 if ((op==__3FDOT)||(op==__3FLENGTH)) retNumeric = TRUE;
5535 retSFVec3d = (!retNumeric);
5539 param_isString = JSVAL_IS_STRING (*argv);
5542 if ((SFParam) || (numParam)) {
5544 if (!JSVAL_IS_NUMBER(argv[0])) {
5545 printf (
"SFVec3d param error - number expected\n");
5548 if (!JS_ValueToNumber(cx, argv[0], &d)) {
5549 printf(
"JS_ValueToNumber failed in SFVec3d.\n");
5555 if (param_isString) {
5556 _str = JS_ValueToString(cx, *argv);
5557 charString = JS_EncodeString(cx,_str);
5558 if (sscanf(charString,
"%lf %lf %lf",
5559 &(pars[0]), &(pars[1]), &(pars[2])) != 3) {
5560 printf (
"conversion problem in SFVec3dGeneric\n");
5569 if(SM_method() == 2){
5570 if (argv[0].isObject()) {
5572 if ((_vec2 = (AnyNative *)JS_GetPrivateFw(cx, JSVAL_TO_OBJECT(argv[0]))) == NULL) {
5573 printf(
"in SFVec3d, RHS was NOT native type \n");
5576 cc2 = _vec2->v->sfvec3d.c;
5581 SFVec3dNative *_vec2;
5582 if (!JS_ConvertArguments(cx, argc, argv,
"o", &_paramObj)) {
5583 printf(
"JS_ConvertArguments failed in SFVec3d.\n");
5587 CHECK_CLASS(cx,_paramObj,argv,__FUNCTION__,SFVec3dClass)
5590 if ((_vec2 = (SFVec3dNative*)JS_GetPrivateFw(cx, _paramObj)) == NULL) {
5591 printf(
"JS_GetPrivate failed for _paramObj in SFVec3d.\n");
5602 if(SM_method() == 2){
5604 if ((_vec1 = (AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
5605 printf(
"JS_GetPrivate failed for obj in SFVec3dAdd.\n");
5608 cc = _vec1->v->sfvec3d.c;
5610 SFVec3dNative *_vec1;
5611 if ((_vec1 = (SFVec3dNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
5612 printf(
"JS_GetPrivate failed for obj in SFVec3dAdd.\n");
5618 #ifdef JSVRMLCLASSESVERBOSE
5619 printf (
"SFVec3d generic, vec2 %f %f %f\n",pars[0],pars[1],pars[2]);
5625 vecaddd(cclhs,cc,cc2);
5628 vecscaled(cclhs,cc,1.0/d);
5631 vecscaled(cclhs,cc,d);
5634 vecdifd(cclhs,cc,cc2);
5637 d = vecdotd(cc,cc2);
5640 veccrossd(cclhs,cc,cc2);
5646 vecnormald(cclhs,cc);
5649 vecnegated(cclhs,cc);
5652 printf (
"woops... %d\n",op);
5656 #ifdef JSVRMLCLASSESVERBOSE
5657 printf (
"past calcs\n");
5662 #ifdef JSVRMLCLASSESVERBOSE
5663 printf (
"returning SFVec3d\n");
5665 if ((_proto = JS_GetPrototypeFw(cx, obj)) == NULL) {
5666 printf(
"JS_GetPrototype failed in SFVec3d.\n");
5670 JS_ConstructObjectFw(cx, &SFVec3dClass, _proto, NULL)) == NULL) {
5671 printf(
"JS_ConstructObject failed in SFVec3d.\n");
5674 *rval = OBJECT_TO_JSVAL(_retObj);
5675 if(SM_method() == 2){
5677 if ((any = (AnyNative*)JS_GetPrivateFw(cx, _retObj)) == NULL) {
5678 printf(
"JS_GetPrivate failed for _retObj in SFVec3d.\n");
5681 memcpy(any->v->sfvec3d.c,cclhs,
sizeof(
double)*3);
5683 SFVec3dNative *_retNative;
5684 if ((_retNative = (SFVec3dNative*)JS_GetPrivateFw(cx, _retObj)) == NULL) {
5685 printf(
"JS_GetPrivate failed for _retObj in SFVec3d.\n");
5688 memcpy(_retNative->v.c,cclhs,3*
sizeof(
double));
5690 }
else if (retNumeric) {
5691 if (JS_NewNumberValue(cx,d,rval) == JS_FALSE) {
5692 printf(
"JS_NewDouble failed for %f in SFVec3d.\n",d);
5696 #ifdef JSVRMLCLASSESVERBOSE
5698 printf(
"SFVec3dgeneric: obj = %p, result = [%.9g, %.9g, %.9g]\n",
5700 (_retNative->v).c[0], (_retNative->v).c[1],
5701 (_retNative->v).c[2]);
5704 printf(
"SFVec2dgeneric: obj = %p, result = %.9g\n",
5713SFVec3dAdd(JSContext *cx, uintN argc, jsval *vp) {
5714 JSObject *obj = JS_THIS_OBJECT(cx,vp);
5715 jsval *argv = JS_ARGV(cx,vp);
5717 JSBool retval = SFVec3dGeneric(cx, obj, argc, argv, &rval, __3FADD);
5718 JS_SET_RVAL(cx,vp,rval);
5723SFVec3dCross(JSContext *cx, uintN argc, jsval *vp) {
5724 JSObject *obj = JS_THIS_OBJECT(cx,vp);
5725 jsval *argv = JS_ARGV(cx,vp);
5727 JSBool retval = SFVec3dGeneric(cx, obj, argc, argv, &rval, __3FCROSS);
5728 JS_SET_RVAL(cx,vp,rval);
5733SFVec3dDivide(JSContext *cx, uintN argc, jsval *vp) {
5734 JSObject *obj = JS_THIS_OBJECT(cx,vp);
5735 jsval *argv = JS_ARGV(cx,vp);
5737 JSBool retval = SFVec3dGeneric(cx, obj, argc, argv, &rval, __3FDIVIDE);
5738 JS_SET_RVAL(cx,vp,rval);
5743SFVec3dDot(JSContext *cx, uintN argc, jsval *vp) {
5744 JSObject *obj = JS_THIS_OBJECT(cx,vp);
5745 jsval *argv = JS_ARGV(cx,vp);
5747 JSBool retval = SFVec3dGeneric(cx, obj, argc, argv, &rval, __3FDOT);
5748 JS_SET_RVAL(cx,vp,rval);
5753SFVec3dLength(JSContext *cx, uintN argc, jsval *vp) {
5754 JSObject *obj = JS_THIS_OBJECT(cx,vp);
5755 jsval *argv = JS_ARGV(cx,vp);
5757 JSBool retval = SFVec3dGeneric(cx, obj, argc, argv, &rval, __3FLENGTH);
5758 JS_SET_RVAL(cx,vp,rval);
5764SFVec3dMultiply(JSContext *cx, uintN argc, jsval *vp) {
5765 JSObject *obj = JS_THIS_OBJECT(cx,vp);
5766 jsval *argv = JS_ARGV(cx,vp);
5768 JSBool retval = SFVec3dGeneric(cx, obj, argc, argv, &rval, __3FMULT);
5769 JS_SET_RVAL(cx,vp,rval);
5775SFVec3dNegate(JSContext *cx, uintN argc, jsval *vp) {
5776 JSObject *obj = JS_THIS_OBJECT(cx,vp);
5777 jsval *argv = JS_ARGV(cx,vp);
5779 JSBool retval = SFVec3dGeneric(cx, obj, argc, argv, &rval, __3FNEGATE);
5780 JS_SET_RVAL(cx,vp,rval);
5785SFVec3dNormalize(JSContext *cx, uintN argc, jsval *vp) {
5786 JSObject *obj = JS_THIS_OBJECT(cx,vp);
5787 jsval *argv = JS_ARGV(cx,vp);
5789 JSBool retval = SFVec3dGeneric(cx, obj, argc, argv, &rval, __3FNORMALIZE);
5790 JS_SET_RVAL(cx,vp,rval);
5795SFVec3dSubtract(JSContext *cx, uintN argc, jsval *vp) {
5796 JSObject *obj = JS_THIS_OBJECT(cx,vp);
5797 jsval *argv = JS_ARGV(cx,vp);
5799 JSBool retval = SFVec3dGeneric(cx, obj, argc, argv, &rval, __3FSUBT);
5800 JS_SET_RVAL(cx,vp,rval);
5805SFVec3dToString(JSContext *cx, uintN argc, jsval *vp) {
5806 JSObject *obj = JS_THIS_OBJECT(cx,vp);
5807 jsval *argv = JS_ARGV(cx,vp);
5816 if ((ptr = (AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
5817 printf(
"JS_GetPrivate failed in SFVec3dToString.\n");
5820 cc = ptr->v->sfvec3d.c;
5823 if ((ptr = (SFVec3dNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
5824 printf(
"JS_GetPrivate failed in SFVec3dToString.\n");
5829 memset(buff, 0, STRING);
5830 sprintf(buff,
"%.9g %.9g %.9g",
5831 cc[0], cc[1], cc[2]);
5832 _str = JS_NewStringCopyZ(cx, buff);
5833 JS_SET_RVAL(cx,vp,STRING_TO_JSVAL(_str));
5835 #ifdef JSVRMLCLASSESVERBOSE
5836 printf (
"SFVec3dToString, string is :%s:\n",buff);
5843SFVec3dAssign(JSContext *cx, uintN argc, jsval *vp) {
5844 JSObject *obj = JS_THIS_OBJECT(cx,vp);
5845 jsval *argv = JS_ARGV(cx,vp);
5846 JSString *_id_jsstr;
5847 JSObject *_from_obj;
5854 #ifdef JSVRMLCLASSESVERBOSE
5855 printf (
"start of SFVec3dAssign\n");
5857 if(SM_method() == 2){
5858 AnyNative *lhs, *rhs;
5859 if ((lhs = (AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
5860 printf(
"JS_GetPrivate failed for obj in SFVec3dAssign.\n");
5863 if (!(*vp).isObject())
5865 if ((rhs = (AnyNative *)JS_GetPrivateFw(cx, JSVAL_TO_OBJECT(*vp))) == NULL) {
5866 printf(
"in setECMANative, RHS was NOT native type \n");
5869 AnyNativeAssign(lhs,rhs);
5872 SFVec3dNative *fptr, *ptr;
5874 if ((ptr = (SFVec3dNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
5875 printf(
"JS_GetPrivate failed for obj in SFVec3dAssign.\n");
5879 CHECK_CLASS(cx,obj,argv,__FUNCTION__,SFVec3dClass)
5881 if (JS_ConvertArguments(cx, argc, argv,
"oS", &_from_obj, &_id_jsstr) == JS_TRUE) {
5882 _id_str = JS_EncodeString(cx,_id_jsstr);
5884 printf(
"JS_ConvertArguments failed in SFVec3dAssign.\n");
5888 CHECK_CLASS(cx,_from_obj,argv,__FUNCTION__,SFVec3dClass)
5890 if ((fptr = (SFVec3dNative *)JS_GetPrivateFw(cx, _from_obj)) == NULL) {
5891 printf(
"JS_GetPrivate failed for _from_obj in SFVec3dAssign.\n");
5894 #ifdef JSVRMLCLASSESVERBOSE
5895 printf(
"SFVec3dAssign: obj = %p, id = \"%s\", from = %p\n",
5896 obj, _id_str, _from_obj);
5899 SFVec3dNativeAssign(ptr, fptr);
5902 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
5904 #ifdef JSVRMLCLASSESVERBOSE
5905 printf (
"end of SFVec3dAssign\n");
5912SFVec3dConstr(JSContext *cx, uintN argc, jsval *vp) {
5913 JSObject *obj = JS_NewObject(cx,&SFVec3dClass,NULL,NULL);
5914 jsval *argv = JS_ARGV(cx,vp);
5918 #ifdef JSVRMLCLASSESVERBOSE
5919 printf (
"start of SFVec3dConstr\n");
5924 if(SM_method() == 2){
5926 if ((any = (AnyNative *) AnyNativeNew(FIELDTYPE_SFVec3d,NULL,NULL)) == NULL) {
5927 printf(
"SFVec3dNativeNew failed in SFVec3dConstr.\n");
5931 if (!JS_SetPrivateFw(cx, obj, any)) {
5932 printf(
"JS_SetPrivate failed in SFVec3dConstr.\n");
5935 cc = any->v->sfvec3d.c;
5938 if ((ptr = (SFVec3dNative *) SFVec3dNativeNew()) == NULL) {
5939 printf(
"SFVec3dNativeNew failed in SFVec3dConstr.\n");
5947 if (!JS_SetPrivateFw(cx, obj, ptr)) {
5948 printf(
"JS_SetPrivate failed in SFVec3dConstr.\n");
5952 ptr->valueChanged = 1;
5955 cc[0] = (float) 0.0;
5956 cc[1] = (float) 0.0;
5957 cc[2] = (float) 0.0;
5959 if (!JS_ConvertArguments(cx, argc, argv,
"d d d",
5960 &(pars[0]), &(pars[1]), &(pars[2]))) {
5961 printf(
"JS_ConvertArguments failed in SFVec3dConstr.\n");
5964 cc[0] = (float) pars[0];
5965 cc[1] = (float) pars[1];
5966 cc[2] = (float) pars[2];
5968 #ifdef JSVRMLCLASSESVERBOSE
5969 printf(
"SFVec3dConstr: obj = %p, %u args, %f %f %f\n",
5971 (ptr->v).c[0], (ptr->v).c[1], (ptr->v).c[2]);
5975 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
5980SFVec3dGetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp){
5981 JSObject *obj = *hobj.address();
5982 jsid iid = *hiid.address();
5983 jsval *vp = hvp.address();
5986 #ifdef JSVRMLCLASSESVERBOSE
5992 if (!JS_IdToValue(cx,iid,&
id)) {
5993 printf(
"JS_IdToValue failed in SFVec3dGetProperty.\n");
5998 #ifdef JSVRMLCLASSESVERBOSE
6004 _idStr = JS_ValueToString(cx, *vp);
6006 _id_c = JS_GetStringBytes(_idStr);
6008 _id_c = JS_EncodeString(cx,_idStr);
6014 if ((ptr = (AnyNative *)JS_GetPrivateFw(cx,obj)) == NULL) {
6015 printf(
"JS_GetPrivate failed in SFVec3dGetProperty.\n");
6018 cc = ptr->v->sfvec3d.c;
6021 if ((ptr = (SFVec3dNative *)JS_GetPrivateFw(cx,obj)) == NULL) {
6022 printf(
"JS_GetPrivate failed in SFVec3dGetProperty.\n");
6027 if (JSVAL_IS_INT(
id)) {
6028 switch (JSVAL_TO_INT(
id)) {
6031 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
6033 "JS_NewDouble failed for %f in SFVec3dGetProperty.\n",
6040 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
6042 "JS_NewDouble failed for %f in SFVec3dGetProperty.\n",
6049 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
6051 "JS_NewDouble failed for %f in SFVec3dGetProperty.\n",
6058 #ifdef JSVRMLCLASSESVERBOSE
6059 printf (
"SFVec3dGetProperty, id is NOT an int...\n");
6067SFVec3dSetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp){
6068 JSObject *obj = *hobj.address();
6069 jsid iid = *hiid.address();
6070 jsval *vp = hvp.address();
6076 if (!JS_IdToValue(cx,iid,&
id)) {
6077 printf(
"JS_IdToValue failed in SFVec3dSetProperty.\n");
6084 if ((ptr = (AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
6085 printf(
"JS_GetPrivate failed in SFVec3dSetProperty.\n");
6088 if(ptr->valueChanged)
6089 (*ptr->valueChanged)++;
6090 #ifdef JSVRMLCLASSESVERBOSE
6091 printf(
"SFVec3dSetProperty: obj = %p, id = %d, valueChanged = %d\n",
6092 obj, JSVAL_TO_INT(
id), ptr->valueChanged);
6094 cc = ptr->v->sfvec3d.c;
6097 if ((ptr = (SFVec3dNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
6098 printf(
"JS_GetPrivate failed in SFVec3dSetProperty.\n");
6101 ptr->valueChanged++;
6102 #ifdef JSVRMLCLASSESVERBOSE
6103 printf(
"SFVec3dSetProperty: obj = %p, id = %d, valueChanged = %d\n",
6104 obj, JSVAL_TO_INT(
id), ptr->valueChanged);
6108 if (!JS_ConvertValue(cx, *vp, JSTYPE_NUMBER, &myv)) {
6109 printf(
"JS_ConvertValue failed in SFVec3dSetProperty.\n");
6113 if (JSVAL_IS_INT(
id)) {
6114 switch (JSVAL_TO_INT(
id)) {
6116 cc[0] = JSVAL_TO_DOUBLE(myv);
6119 cc[1] = JSVAL_TO_DOUBLE(myv);
6122 cc[2] = JSVAL_TO_DOUBLE(myv);
6131SFVec4fToString(JSContext *cx, uintN argc, jsval *vp) {
6132 JSObject *obj = JS_THIS_OBJECT(cx,vp);
6133 jsval *argv = JS_ARGV(cx,vp);
6142 if ((ptr = (AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
6143 printf(
"JS_GetPrivate failed in SFVec4fToString.\n");
6146 cc = ptr->v->sfvec4f.c;
6150 if ((ptr = (SFVec4fNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
6151 printf(
"JS_GetPrivate failed in SFVec4fToString.\n");
6156 memset(buff, 0, STRING);
6157 sprintf(buff,
"%.9g %.9g %.9g %.9g",
6158 cc[0], cc[1], cc[2],cc[3]);
6159 _str = JS_NewStringCopyZ(cx, buff);
6160 JS_SET_RVAL(cx,vp,STRING_TO_JSVAL(_str));
6162 #ifdef JSVRMLCLASSESVERBOSE
6163 printf (
"SFVec4fToString, string is :%s:\n",buff);
6170SFVec4fAssign(JSContext *cx, uintN argc, jsval *vp) {
6171 JSObject *obj = JS_THIS_OBJECT(cx,vp);
6172 jsval *argv = JS_ARGV(cx,vp);
6173 JSString *_id_jsstr;
6174 JSObject *_from_obj;
6180 #ifdef JSVRMLCLASSESVERBOSE
6181 printf (
"start of SFVec4fAssign\n");
6183 if(SM_method() == 2){
6184 AnyNative *lhs, *rhs;
6185 if ((lhs = (AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
6186 printf(
"JS_GetPrivate failed for obj in SFVec4fAssign.\n");
6189 if (!(*vp).isObject())
6191 if ((rhs = (AnyNative *)JS_GetPrivateFw(cx, JSVAL_TO_OBJECT(*vp))) == NULL) {
6192 printf(
"JS_ConvertArguments failed in SFVec4fAssign. \n");
6195 AnyNativeAssign(lhs,rhs);
6197 SFVec4fNative *fptr, *ptr;
6199 if ((ptr = (SFVec4fNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
6200 printf(
"JS_GetPrivate failed for obj in SFVec4fAssign.\n");
6204 CHECK_CLASS(cx,obj,argv,__FUNCTION__,SFVec4fClass)
6206 if (JS_ConvertArguments(cx, argc, argv,
"oS", &_from_obj, &_id_jsstr) == JS_TRUE) {
6207 _id_str = JS_EncodeString(cx,_id_jsstr);
6209 printf(
"JS_ConvertArguments failed in SFVec4fAssign.\n");
6213 CHECK_CLASS(cx,_from_obj,argv,__FUNCTION__,SFVec4fClass)
6215 if ((fptr = (SFVec4fNative *)JS_GetPrivateFw(cx, _from_obj)) == NULL) {
6216 printf(
"JS_GetPrivate failed for _from_obj in SFVec4fAssign.\n");
6219 #ifdef JSVRMLCLASSESVERBOSE
6220 printf(
"SFVec4fAssign: obj = %p, id = \"%s\", from = %p\n",
6221 obj, _id_str, _from_obj);
6224 SFVec4fNativeAssign(ptr, fptr);
6226 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
6228 #ifdef JSVRMLCLASSESVERBOSE
6229 printf (
"end of SFVec4fAssign\n");
6236SFVec4fConstr(JSContext *cx, uintN argc, jsval *vp) {
6237 JSObject *obj = JS_NewObject(cx,&SFVec4fClass,NULL,NULL);
6238 jsval *argv = JS_ARGV(cx,vp);
6242 #ifdef JSVRMLCLASSESVERBOSE
6243 printf (
"start of SFVec4fConstr\n");
6247 if(SM_method() == 2){
6249 if((any = (AnyNative*)AnyNativeNew(FIELDTYPE_SFVec4f,NULL,NULL)) == NULL){
6250 printf(
"AnyfNativeNew failed in SFVec4fConstr.\n");
6253 if (!JS_SetPrivateFw(cx, obj, any)) {
6254 printf(
"JS_SetPrivate failed in SFVec4fConstr.\n");
6257 cc = any->v->sfvec4f.c;
6260 if ((ptr = (SFVec4fNative *) SFVec4fNativeNew()) == NULL) {
6261 printf(
"SFVec4fNativeNew failed in SFVec4fConstr.\n");
6264 ptr->valueChanged = 1;
6270 if (!JS_SetPrivateFw(cx, obj, ptr)) {
6271 printf(
"JS_SetPrivate failed in SFVec4fConstr.\n");
6277 cc[0] = (float) 0.0;
6278 cc[1] = (float) 0.0;
6279 cc[2] = (float) 0.0;
6280 cc[3] = (float) 0.0;
6282 if (!JS_ConvertArguments(cx, argc, argv,
"d d d d",
6283 &(pars[0]), &(pars[1]), &(pars[2]), &(pars[3]))) {
6284 printf(
"JS_ConvertArguments failed in SFVec4fConstr.\n");
6287 cc[0] = (float) pars[0];
6288 cc[1] = (float) pars[1];
6289 cc[2] = (float) pars[2];
6290 cc[3] = (float) pars[3];
6292 #ifdef JSVRMLCLASSESVERBOSE
6293 printf(
"SFVec4fConstr: obj = %p, %u args, %f %f %f %f\n",
6295 cc[0], cc[1], cc[2], cc[3]);
6298 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
6303SFVec4fGetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp){
6304 JSObject *obj = *hobj.address();
6305 jsid iid = *hiid.address();
6306 jsval *vp = hvp.address();
6310 #ifdef JSVRMLCLASSESVERBOSE
6316 if (!JS_IdToValue(cx,iid,&
id)) {
6317 printf(
"JS_IdToValue failed in SFVec4fGetProperty.\n");
6322 #ifdef JSVRMLCLASSESVERBOSE
6330 _idStr = JS_ValueToString(cx, *vp);
6332 _id_c = JS_GetStringBytes(_idStr);
6334 _id_c = JS_EncodeString(cx,_idStr);
6340 if ((any = (AnyNative *)JS_GetPrivateFw(cx,obj)) == NULL) {
6341 printf(
"JS_GetPrivate failed in SFVec4fGetProperty.\n");
6344 cc = any->v->sfvec4f.c;
6347 if ((ptr = (SFVec4fNative *)JS_GetPrivateFw(cx,obj)) == NULL) {
6348 printf(
"JS_GetPrivate failed in SFVec4fGetProperty.\n");
6353 if (JSVAL_IS_INT(
id)) {
6354 switch (JSVAL_TO_INT(
id)) {
6357 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
6359 "JS_NewDouble failed for %f in SFVec4fGetProperty.\n",
6366 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
6368 "JS_NewDouble failed for %f in SFVec4fGetProperty.\n",
6375 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
6377 "JS_NewDouble failed for %f in SFVec4fGetProperty.\n",
6384 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
6386 "JS_NewDouble failed for %f in SFVec4fGetProperty.\n",
6393 #ifdef JSVRMLCLASSESVERBOSE
6394 printf (
"SFVec4fGetProperty, id is NOT an int...\n");
6402SFVec4fSetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp){
6403 JSObject *obj = *hobj.address();
6404 jsid iid = *hiid.address();
6405 jsval *vp = hvp.address();
6412 if (!JS_IdToValue(cx,iid,&
id)) {
6413 printf(
"JS_IdToValue failed in SFVec4fSetProperty.\n");
6417 if(SM_method() == 2){
6419 if ((any = (AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
6420 printf(
"JS_GetPrivate failed in SFVec4fSetProperty.\n");
6423 if(any->valueChanged)
6424 (*any->valueChanged)++;
6425 cc = any->v->sfvec4f.c;
6429 if ((ptr = (SFVec4fNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
6430 printf(
"JS_GetPrivate failed in SFVec4fSetProperty.\n");
6433 ptr->valueChanged++;
6434 #ifdef JSVRMLCLASSESVERBOSE
6435 printf(
"SFVec4fSetProperty: obj = %p, id = %d, valueChanged = %d\n",
6436 obj, JSVAL_TO_INT(
id), ptr->valueChanged);
6440 if (!JS_ConvertValue(cx, *vp, JSTYPE_NUMBER, &myv)) {
6441 printf(
"JS_ConvertValue failed in SFVec4fSetProperty.\n");
6445 if (JSVAL_IS_INT(
id)) {
6446 switch (JSVAL_TO_INT(
id)) {
6448 cc[0] = (float) JSVAL_TO_DOUBLE(myv);
6451 cc[1] = (float) JSVAL_TO_DOUBLE(myv);
6454 cc[2] = (float) JSVAL_TO_DOUBLE(myv);
6457 cc[3] = (float) JSVAL_TO_DOUBLE(myv);
6467SFVec4dToString(JSContext *cx, uintN argc, jsval *vp) {
6468 JSObject *obj = JS_THIS_OBJECT(cx,vp);
6469 jsval *argv = JS_ARGV(cx,vp);
6479 if ((ptr = (AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
6480 printf(
"JS_GetPrivate failed in SFVec4dToString.\n");
6483 cc = ptr->v->sfvec4d.c;
6486 if ((ptr = (SFVec4dNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
6487 printf(
"JS_GetPrivate failed in SFVec4dToString.\n");
6492 memset(buff, 0, STRING);
6493 sprintf(buff,
"%.9g %.9g %.9g %.9g",
6494 cc[0], cc[1], cc[2],cc[3]);
6495 _str = JS_NewStringCopyZ(cx, buff);
6497 JS_SET_RVAL(cx,vp,STRING_TO_JSVAL(_str));
6499 #ifdef JSVRMLCLASSESVERBOSE
6500 printf (
"SFVec4dToString, string is :%s:\n",buff);
6507SFVec4dAssign(JSContext *cx, uintN argc, jsval *vp) {
6508 JSObject *obj = JS_THIS_OBJECT(cx,vp);
6509 jsval *argv = JS_ARGV(cx,vp);
6510 JSString *_id_jsstr;
6511 JSObject *_from_obj;
6516 #ifdef JSVRMLCLASSESVERBOSE
6517 printf (
"start of SFVec4dAssign\n");
6520 if(SM_method() == 2){
6521 AnyNative *lhs, *rhs;
6522 if ((lhs = (AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
6523 printf(
"JS_GetPrivate failed for obj in SFVec4dAssign.\n");
6526 if (!(*vp).isObject())
6528 if ((rhs = (AnyNative *)JS_GetPrivateFw(cx, JSVAL_TO_OBJECT(*vp))) == NULL) {
6529 printf(
"in SFVec4dAssign, RHS was NOT native type \n");
6532 AnyNativeAssign(lhs,rhs);
6535 SFVec4dNative *fptr, *ptr;
6537 if ((ptr = (SFVec4dNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
6538 printf(
"JS_GetPrivate failed for obj in SFVec4dAssign.\n");
6542 CHECK_CLASS(cx,obj,argv,__FUNCTION__,SFVec4dClass)
6544 if (JS_ConvertArguments(cx, argc, argv,
"oS", &_from_obj, &_id_jsstr) == JS_TRUE) {
6545 _id_str = JS_EncodeString(cx,_id_jsstr);
6547 printf(
"JS_ConvertArguments failed in SFVec4dAssign.\n");
6551 CHECK_CLASS(cx,_from_obj,argv,__FUNCTION__,SFVec4dClass)
6553 if ((fptr = (SFVec4dNative *)JS_GetPrivateFw(cx, _from_obj)) == NULL) {
6554 printf(
"JS_GetPrivate failed for _from_obj in SFVec4dAssign.\n");
6557 #ifdef JSVRMLCLASSESVERBOSE
6558 printf(
"SFVec4dAssign: obj = %p, id = \"%s\", from = %p\n",
6559 obj, _id_str, _from_obj);
6562 SFVec4dNativeAssign(ptr, fptr);
6564 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
6566 #ifdef JSVRMLCLASSESVERBOSE
6567 printf (
"end of SFVec4dAssign\n");
6574SFVec4dConstr(JSContext *cx, uintN argc, jsval *vp) {
6575 JSObject *obj = JS_NewObject(cx,&SFVec4dClass,NULL,NULL);
6576 jsval *argv = JS_ARGV(cx,vp);
6580 #ifdef JSVRMLCLASSESVERBOSE
6581 printf (
"start of SFVec4dConstr\n");
6585 if(SM_method() == 2){
6587 if ((any = (AnyNative *) AnyNativeNew(FIELDTYPE_SFVec4d,NULL,NULL)) == NULL) {
6588 printf(
"SFVec3dNativeNew failed in SFVec3dConstr.\n");
6592 if (!JS_SetPrivateFw(cx, obj, any)) {
6593 printf(
"JS_SetPrivate failed in SFVec3dConstr.\n");
6596 cc = any->v->sfvec4d.c;
6600 if ((ptr = (SFVec4dNative *) SFVec4dNativeNew()) == NULL) {
6601 printf(
"SFVec4dNativeNew failed in SFVec4dConstr.\n");
6609 if (!JS_SetPrivateFw(cx, obj, ptr)) {
6610 printf(
"JS_SetPrivate failed in SFVec4dConstr.\n");
6613 ptr->valueChanged = 1;
6617 cc[0] = (float) 0.0;
6618 cc[1] = (float) 0.0;
6619 cc[2] = (float) 0.0;
6620 cc[3] = (float) 0.0;
6622 if (!JS_ConvertArguments(cx, argc, argv,
"d d d d",
6623 &(pars[0]), &(pars[1]), &(pars[2]), &(pars[3]))) {
6624 printf(
"JS_ConvertArguments failed in SFVec4dConstr.\n");
6627 cc[0] = (float) pars[0];
6628 cc[1] = (float) pars[1];
6629 cc[2] = (float) pars[2];
6630 cc[3] = (float) pars[3];
6632 #ifdef JSVRMLCLASSESVERBOSE
6633 printf(
"SFVec4dConstr: obj = %p, %u args, %f %f %f %f\n",
6635 cc[0], cc[1], cc[2], cc[3]);
6639 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
6644SFVec4dGetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp){
6645 JSObject *obj = *hobj.address();
6646 jsid iid = *hiid.address();
6647 jsval *vp = hvp.address();
6651 #ifdef JSVRMLCLASSESVERBOSE
6657 if (!JS_IdToValue(cx,iid,&
id)) {
6658 printf(
"JS_IdToValue failed in SFVec4dGetProperty.\n");
6663 #ifdef JSVRMLCLASSESVERBOSE
6667 _idStr = JS_ValueToString(cx, *vp);
6669 _id_c = JS_GetStringBytes(_idStr);
6671 _id_c = JS_EncodeString(cx,_idStr);
6677 if ((ptr = (AnyNative *)JS_GetPrivateFw(cx,obj)) == NULL) {
6678 printf(
"JS_GetPrivate failed in SFVec4dGetProperty.\n");
6681 cc = ptr->v->sfvec4d.c;
6684 if ((ptr = (SFVec4dNative *)JS_GetPrivateFw(cx,obj)) == NULL) {
6685 printf(
"JS_GetPrivate failed in SFVec4dGetProperty.\n");
6690 if (JSVAL_IS_INT(
id)) {
6691 switch (JSVAL_TO_INT(
id)) {
6694 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
6696 "JS_NewDouble failed for %f in SFVec4dGetProperty.\n",
6703 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
6705 "JS_NewDouble failed for %f in SFVec4dGetProperty.\n",
6712 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
6714 "JS_NewDouble failed for %f in SFVec4dGetProperty.\n",
6721 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
6723 "JS_NewDouble failed for %f in SFVec4dGetProperty.\n",
6730 #ifdef JSVRMLCLASSESVERBOSE
6731 printf (
"SFVec4dGetProperty, id is NOT an int...\n");
6739SFVec4dSetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp){
6740 JSObject *obj = *hobj.address();
6741 jsid iid = *hiid.address();
6742 jsval *vp = hvp.address();
6749 if (!JS_IdToValue(cx,iid,&
id)) {
6750 printf(
"JS_IdToValue failed in SFVec4dSetProperty.\n");
6756 if ((ptr = (AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
6757 printf(
"JS_GetPrivate failed in SFVec4dSetProperty.\n");
6760 if(ptr->valueChanged)
6761 (*ptr->valueChanged)++;
6762 #ifdef JSVRMLCLASSESVERBOSE
6763 printf(
"SFVec4dSetProperty: obj = %p, id = %d, valueChanged = %d\n",
6764 obj, JSVAL_TO_INT(
id), ptr->valueChanged);
6766 cc = ptr->v->sfvec4d.c;
6770 if ((ptr = (SFVec4dNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
6771 printf(
"JS_GetPrivate failed in SFVec4dSetProperty.\n");
6774 ptr->valueChanged++;
6775 #ifdef JSVRMLCLASSESVERBOSE
6776 printf(
"SFVec4dSetProperty: obj = %p, id = %d, valueChanged = %d\n",
6777 obj, JSVAL_TO_INT(
id), ptr->valueChanged);
6781 if (!JS_ConvertValue(cx, *vp, JSTYPE_NUMBER, &myv)) {
6782 printf(
"JS_ConvertValue failed in SFVec4dSetProperty.\n");
6786 if (JSVAL_IS_INT(
id)) {
6787 switch (JSVAL_TO_INT(
id)) {
6789 cc[0] = (float) JSVAL_TO_DOUBLE(myv);
6792 cc[1] = (float) JSVAL_TO_DOUBLE(myv);
6795 cc[2] = (float) JSVAL_TO_DOUBLE(myv);
6798 cc[3] = (float) JSVAL_TO_DOUBLE(myv);
6808SFMatrix3fToString(JSContext* cx, uintN argc, jsval* vp) {
6809 JSObject* obj = JS_THIS_OBJECT(cx, vp);
6810 jsval* argv = JS_ARGV(cx, vp);
6818 if (SM_method() == 2) {
6820 if ((ptr = (AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
6821 printf(
"JS_GetPrivate failed in SFMatrix3fToString.\n");
6824 cc = ptr->v->sfmatrix3f.c;
6826 memset(buff, 0, STRING);
6827 sprintf(buff,
"%.9g %.9g %.9g, %.9g %.9g %.9g, %.9g %.9g %.9g ",
6828 cc[0], cc[1], cc[2],
6829 cc[3], cc[4], cc[5],
6830 cc[6], cc[7], cc[8]);
6831 _str = JS_NewStringCopyZ(cx, buff);
6833 JS_SET_RVAL(cx, vp, STRING_TO_JSVAL(_str));
6838SFMatrix3fAssign(JSContext* cx, uintN argc, jsval* vp) {
6839 JSObject* obj = JS_THIS_OBJECT(cx, vp);
6840 jsval* argv = JS_ARGV(cx, vp);
6841 JSString* _id_jsstr;
6842 JSObject* _from_obj;
6847#ifdef JSVRMLCLASSESVERBOSE
6848 printf(
"start of SFMatrix3fAssign\n");
6851 if (SM_method() == 2) {
6852 AnyNative* lhs, * rhs;
6853 if ((lhs = (AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
6854 printf(
"JS_GetPrivate failed for obj in SFMatrix3fAssign.\n");
6857 if (!(*vp).isObject())
6859 if ((rhs = (AnyNative*)JS_GetPrivateFw(cx, JSVAL_TO_OBJECT(*vp))) == NULL) {
6860 printf(
"in SFMatrix3fAssign, RHS was NOT native type \n");
6863 AnyNativeAssign(lhs, rhs);
6866 JS_SET_RVAL(cx, vp, OBJECT_TO_JSVAL(obj));
6868#ifdef JSVRMLCLASSESVERBOSE
6869 printf(
"end of SFMatrix3fAssign\n");
6876SFMatrix3fConstr(JSContext* cx, uintN argc, jsval* vp) {
6877 JSObject* obj = JS_NewObject(cx, &SFMatrix3fClass, NULL, NULL);
6878 jsval* argv = JS_ARGV(cx, vp);
6883 if (SM_method() == 2) {
6885 if ((any = (AnyNative*)AnyNativeNew(FIELDTYPE_SFMatrix3f, NULL, NULL)) == NULL) {
6886 printf(
"SFMatrix3fNativeNew failed in SFMatrix3fConstr.\n");
6890 if (!JS_SetPrivateFw(cx, obj, any)) {
6891 printf(
"JS_SetPrivate failed in SFMatrix3fConstr.\n");
6894 cc = any->v->sfmatrix3f.c;
6899 JSObject* _arrayObj;
6902 if (!JS_ValueToObject(cx, argv[0], &_arrayObj)) {
6903 printf(
"JS_ValueToObject failed in SFMatrix3fConstr.\n");
6907 if (JS_IsArrayObject(cx, _arrayObj)) {
6913 JS_GetArrayLength(cx, _arrayObj, &lengthp);
6914 ncopy = lengthp > 9 ? 9 : lengthp;
6915 for (
int i = 0; i < ncopy; i++) {
6916 JS_GetElement(cx, _arrayObj, i, &vp);
6917 if (JS_ValueToNumber(cx, vp, &_d))
6924 if ((ptr = (AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
6925 printf(
"JS_GetPrivate failed in SFMatrix3fConstr.\n");
6928 shallow_copy_field_precision(ptr->type, FIELDTYPE_SFMatrix3f, ptr->v, (
union anyVrml*)cc);
6930 }
else if(argc == 9){
6931 if (!JS_ConvertArguments(cx, argc, argv,
"d d d d d d d d d",
6932 &(pars[0]), &(pars[1]), &(pars[2]),
6933 &(pars[3]), &(pars[4]), &(pars[5]),
6934 &(pars[6]), &(pars[7]), &(pars[8]) )) {
6935 printf(
"JS_ConvertArguments failed in SFMatrix3fConstr.\n");
6938 for(
int i=0;i<9;i++)
6939 cc[i] = (
float)pars[i];
6941 JS_SET_RVAL(cx, vp, OBJECT_TO_JSVAL(obj));
6946SFMatrix3fGetProperty(JSContext* cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp) {
6947 JSObject* obj = *hobj.address();
6948 jsid iid = *hiid.address();
6949 jsval* vp = hvp.address();
6955 if (!JS_IdToValue(cx, iid, &
id)) {
6956 printf(
"JS_IdToValue failed in SFMatrix3fGetProperty.\n");
6960 if (SM_method() == 2) {
6962 if ((ptr = (AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
6963 printf(
"JS_GetPrivate failed in SFMatrix3fGetProperty.\n");
6966 cc = ptr->v->sfmatrix3f.c;
6968 if (JSVAL_IS_INT(
id)) {
6969 int ii = JSVAL_TO_INT(
id);
6970 if (ii > -1 && ii < 9) {
6972 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
6974 "JS_NewDouble failed for %f in SFMatrix3fGetProperty.\n",
6989SFMatrix3fSetProperty(JSContext* cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp) {
6990 JSObject* obj = *hobj.address();
6991 jsid iid = *hiid.address();
6992 jsval* vp = hvp.address();
6999 if (!JS_IdToValue(cx, iid, &
id)) {
7000 printf(
"JS_IdToValue failed in SFMatrix3fSetProperty.\n");
7004 if (SM_method() == 2) {
7006 if ((ptr = (AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
7007 printf(
"JS_GetPrivate failed in SFMatrix3fSetProperty.\n");
7010 if (ptr->valueChanged)
7011 (*ptr->valueChanged)++;
7012 cc = ptr->v->sfmatrix3f.c;
7014 if (!JS_ConvertValue(cx, *vp, JSTYPE_NUMBER, &myv)) {
7015 printf(
"JS_ConvertValue failed in SFMatrix3fSetProperty.\n");
7019 if (JSVAL_IS_INT(
id)) {
7020 int ii = JSVAL_TO_INT(
id);
7021 if(ii > -1 && ii < 9)
7022 cc[ii] = (float)JSVAL_TO_DOUBLE(myv);
7031SFMatrix4fToString(JSContext* cx, uintN argc, jsval* vp) {
7032 JSObject* obj = JS_THIS_OBJECT(cx, vp);
7033 jsval* argv = JS_ARGV(cx, vp);
7041 if (SM_method() == 2) {
7043 if ((ptr = (AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
7044 printf(
"JS_GetPrivate failed in SFMatrix4fToString.\n");
7047 cc = ptr->v->sfmatrix4f.c;
7049 memset(buff, 0, STRING);
7050 sprintf(buff,
"%.9g %.9g %.9g %.9g, %.9g %.9g %.9g %.9g, %.9g %.9g %.9g %.9g, %.9g %.9g %.9g %.9g",
7051 cc[0], cc[1], cc[2], cc[3],
7052 cc[4], cc[5], cc[6], cc[7],
7053 cc[8], cc[9], cc[10], cc[11],
7054 cc[12], cc[13], cc[14], cc[15]
7056 _str = JS_NewStringCopyZ(cx, buff);
7058 JS_SET_RVAL(cx, vp, STRING_TO_JSVAL(_str));
7063SFMatrix4fAssign(JSContext* cx, uintN argc, jsval* vp) {
7064 JSObject* obj = JS_THIS_OBJECT(cx, vp);
7065 jsval* argv = JS_ARGV(cx, vp);
7066 JSString* _id_jsstr;
7067 JSObject* _from_obj;
7072#ifdef JSVRMLCLASSESVERBOSE
7073 printf(
"start of SFMatrix4fAssign\n");
7076 if (SM_method() == 2) {
7077 AnyNative* lhs, * rhs;
7078 if ((lhs = (AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
7079 printf(
"JS_GetPrivate failed for obj in SFMatrix4fAssign.\n");
7082 if (!(*vp).isObject())
7084 if ((rhs = (AnyNative*)JS_GetPrivateFw(cx, JSVAL_TO_OBJECT(*vp))) == NULL) {
7085 printf(
"in SFMatrix4fAssign, RHS was NOT native type \n");
7088 AnyNativeAssign(lhs, rhs);
7091 JS_SET_RVAL(cx, vp, OBJECT_TO_JSVAL(obj));
7093#ifdef JSVRMLCLASSESVERBOSE
7094 printf(
"end of SFMatrix4fAssign\n");
7101SFMatrix4fConstr(JSContext* cx, uintN argc, jsval* vp) {
7102 JSObject* obj = JS_NewObject(cx, &SFMatrix4fClass, NULL, NULL);
7103 jsval* argv = JS_ARGV(cx, vp);
7108 if (SM_method() == 2) {
7110 if ((any = (AnyNative*)AnyNativeNew(FIELDTYPE_SFMatrix4f, NULL, NULL)) == NULL) {
7111 printf(
"SFMatrix4fNativeNew failed in SFMatrix4fConstr.\n");
7115 if (!JS_SetPrivateFw(cx, obj, any)) {
7116 printf(
"JS_SetPrivate failed in SFMatrix4fConstr.\n");
7119 cc = any->v->sfmatrix4f.c;
7124 JSObject* _arrayObj;
7127 if (!JS_ValueToObject(cx, argv[0], &_arrayObj)) {
7128 printf(
"JS_ValueToObject failed in SFMatrix4fConstr.\n");
7132 if (JS_IsArrayObject(cx, _arrayObj)) {
7138 JS_GetArrayLength(cx, _arrayObj, &lengthp);
7139 ncopy = lengthp > 16 ? 16 : lengthp;
7140 for (
int i = 0; i < ncopy; i++) {
7141 JS_GetElement(cx, _arrayObj, i, &vp);
7142 if (JS_ValueToNumber(cx, vp, &_d))
7149 if ((ptr = (AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
7150 printf(
"JS_GetPrivate failed in SFMatrix4fConstr.\n");
7153 shallow_copy_field_precision(ptr->type, FIELDTYPE_SFMatrix4f, ptr->v, (
union anyVrml*)cc);
7156 else if (argc == 16) {
7157 if (!JS_ConvertArguments(cx, argc, argv,
"d d d d d d d d d d d d d d d d",
7158 &(pars[0]), &(pars[1]), &(pars[2]), &(pars[3]),
7159 &(pars[4]), &(pars[5]), &(pars[6]), &(pars[7]),
7160 &(pars[8]), &(pars[9]), &(pars[10]), &(pars[11]),
7161 &(pars[12]), &(pars[13]), &(pars[14]), &(pars[15])
7164 printf(
"JS_ConvertArguments failed in SFMatrix4fConstr.\n");
7167 for (
int i = 0; i < 16; i++)
7168 cc[i] = (
float)pars[i];
7170 JS_SET_RVAL(cx, vp, OBJECT_TO_JSVAL(obj));
7175SFMatrix4fGetProperty(JSContext* cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp) {
7176 JSObject* obj = *hobj.address();
7177 jsid iid = *hiid.address();
7178 jsval* vp = hvp.address();
7184 if (!JS_IdToValue(cx, iid, &
id)) {
7185 printf(
"JS_IdToValue failed in SFMatrix4fGetProperty.\n");
7189 if (SM_method() == 2) {
7191 if ((ptr = (AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
7192 printf(
"JS_GetPrivate failed in SFMatrix4fGetProperty.\n");
7195 cc = ptr->v->sfmatrix4f.c;
7197 if (JSVAL_IS_INT(
id)) {
7198 int ii = JSVAL_TO_INT(
id);
7199 if (ii > -1 && ii < 16) {
7201 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
7203 "JS_NewDouble failed for %f in SFMatrix4fGetProperty.\n",
7217SFMatrix4fSetProperty(JSContext* cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp) {
7218 JSObject* obj = *hobj.address();
7219 jsid iid = *hiid.address();
7220 jsval* vp = hvp.address();
7227 if (!JS_IdToValue(cx, iid, &
id)) {
7228 printf(
"JS_IdToValue failed in SFMatrix4fSetProperty.\n");
7232 if (SM_method() == 2) {
7234 if ((ptr = (AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
7235 printf(
"JS_GetPrivate failed in SFMatrix4fSetProperty.\n");
7238 if (ptr->valueChanged)
7239 (*ptr->valueChanged)++;
7240 cc = ptr->v->sfmatrix4f.c;
7242 if (!JS_ConvertValue(cx, *vp, JSTYPE_NUMBER, &myv)) {
7243 printf(
"JS_ConvertValue failed in SFMatrix3fSetProperty.\n");
7247 if (JSVAL_IS_INT(
id)) {
7248 int ii = JSVAL_TO_INT(
id);
7249 if(ii > -1 && ii < 16)
7250 cc[ii] = (float)JSVAL_TO_DOUBLE(myv);
7258SFMatrix3dToString(JSContext* cx, uintN argc, jsval* vp) {
7259 JSObject* obj = JS_THIS_OBJECT(cx, vp);
7260 jsval* argv = JS_ARGV(cx, vp);
7268 if (SM_method() == 2) {
7270 if ((ptr = (AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
7271 printf(
"JS_GetPrivate failed in SFMatrix3dToString.\n");
7274 cc = ptr->v->sfmatrix3d.c;
7276 memset(buff, 0, STRING);
7277 sprintf(buff,
"%.9g %.9g %.9g, %.9g %.9g %.9g, %.9g %.9g %.9g ",
7278 cc[0], cc[1], cc[2],
7279 cc[3], cc[4], cc[5],
7280 cc[6], cc[7], cc[8]);
7281 _str = JS_NewStringCopyZ(cx, buff);
7283 JS_SET_RVAL(cx, vp, STRING_TO_JSVAL(_str));
7288SFMatrix3dAssign(JSContext* cx, uintN argc, jsval* vp) {
7289 JSObject* obj = JS_THIS_OBJECT(cx, vp);
7290 jsval* argv = JS_ARGV(cx, vp);
7291 JSString* _id_jsstr;
7292 JSObject* _from_obj;
7297#ifdef JSVRMLCLASSESVERBOSE
7298 printf(
"start of SFMatrix3dAssign\n");
7301 if (SM_method() == 2) {
7302 AnyNative* lhs, * rhs;
7303 if ((lhs = (AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
7304 printf(
"JS_GetPrivate failed for obj in SFMatrix3dAssign.\n");
7307 if (!(*vp).isObject())
7309 if ((rhs = (AnyNative*)JS_GetPrivateFw(cx, JSVAL_TO_OBJECT(*vp))) == NULL) {
7310 printf(
"in SFMatrix3dAssign, RHS was NOT native type \n");
7313 AnyNativeAssign(lhs, rhs);
7316 JS_SET_RVAL(cx, vp, OBJECT_TO_JSVAL(obj));
7318#ifdef JSVRMLCLASSESVERBOSE
7319 printf(
"end of SFMatrix3dAssign\n");
7326SFMatrix3dConstr(JSContext* cx, uintN argc, jsval* vp) {
7327 JSObject* obj = JS_NewObject(cx, &SFMatrix3dClass, NULL, NULL);
7328 jsval* argv = JS_ARGV(cx, vp);
7333 if (SM_method() == 2) {
7335 if ((any = (AnyNative*)AnyNativeNew(FIELDTYPE_SFMatrix3d, NULL, NULL)) == NULL) {
7336 printf(
"SFMatrix3dNativeNew failed in SFMatrix3dConstr.\n");
7340 if (!JS_SetPrivateFw(cx, obj, any)) {
7341 printf(
"JS_SetPrivate failed in SFMatrix3dConstr.\n");
7344 cc = any->v->sfmatrix3d.c;
7349 JSObject* _arrayObj;
7352 if (!JS_ValueToObject(cx, argv[0], &_arrayObj)) {
7353 printf(
"JS_ValueToObject failed in SFMatrix3dConstr.\n");
7357 if (JS_IsArrayObject(cx, _arrayObj)) {
7363 JS_GetArrayLength(cx, _arrayObj, &lengthp);
7364 ncopy = lengthp > 9 ? 9 : lengthp;
7365 for (
int i = 0; i < ncopy; i++) {
7366 JS_GetElement(cx, _arrayObj, i, &vp);
7367 if (JS_ValueToNumber(cx, vp, &_d))
7374 if ((ptr = (AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
7375 printf(
"JS_GetPrivate failed in SFMatrix3dConstr.\n");
7378 shallow_copy_field_precision(ptr->type, FIELDTYPE_SFMatrix3d, ptr->v, (
union anyVrml*)cc);
7381 else if (argc == 9) {
7382 if (!JS_ConvertArguments(cx, argc, argv,
"d d d d d d d d d",
7383 &(pars[0]), &(pars[1]), &(pars[2]),
7384 &(pars[3]), &(pars[4]), &(pars[5]),
7385 &(pars[6]), &(pars[7]), &(pars[8]))) {
7386 printf(
"JS_ConvertArguments failed in SFMatrix3dConstr.\n");
7389 for (
int i = 0; i < 9; i++)
7390 cc[i] = (
double)pars[i];
7392 JS_SET_RVAL(cx, vp, OBJECT_TO_JSVAL(obj));
7397SFMatrix3dGetProperty(JSContext* cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp) {
7398 JSObject* obj = *hobj.address();
7399 jsid iid = *hiid.address();
7400 jsval* vp = hvp.address();
7406 if (!JS_IdToValue(cx, iid, &
id)) {
7407 printf(
"JS_IdToValue failed in SFMatrix3dGetProperty.\n");
7411 if (SM_method() == 2) {
7413 if ((ptr = (AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
7414 printf(
"JS_GetPrivate failed in SFMatrix3dGetProperty.\n");
7417 cc = ptr->v->sfmatrix3d.c;
7419 if (JSVAL_IS_INT(
id)) {
7420 int ii = JSVAL_TO_INT(
id);
7421 if (ii > -1 && ii < 9) {
7423 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
7425 "JS_NewDouble failed for %f in SFMatrix3dGetProperty.\n",
7440SFMatrix3dSetProperty(JSContext* cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp) {
7441 JSObject* obj = *hobj.address();
7442 jsid iid = *hiid.address();
7443 jsval* vp = hvp.address();
7450 if (!JS_IdToValue(cx, iid, &
id)) {
7451 printf(
"JS_IdToValue failed in SFMatrix3dSetProperty.\n");
7455 if (SM_method() == 2) {
7457 if ((ptr = (AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
7458 printf(
"JS_GetPrivate failed in SFMatrix3dSetProperty.\n");
7461 if (ptr->valueChanged)
7462 (*ptr->valueChanged)++;
7463 cc = ptr->v->sfmatrix3d.c;
7465 if (!JS_ConvertValue(cx, *vp, JSTYPE_NUMBER, &myv)) {
7466 printf(
"JS_ConvertValue failed in SFMatrix3dSetProperty.\n");
7470 if (JSVAL_IS_INT(
id)) {
7471 int ii = JSVAL_TO_INT(
id);
7472 if (ii > -1 && ii < 9)
7473 cc[ii] = (double)JSVAL_TO_DOUBLE(myv);
7481SFMatrix4dToString(JSContext* cx, uintN argc, jsval* vp) {
7482 JSObject* obj = JS_THIS_OBJECT(cx, vp);
7483 jsval* argv = JS_ARGV(cx, vp);
7491 if (SM_method() == 2) {
7493 if ((ptr = (AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
7494 printf(
"JS_GetPrivate failed in SFMatrix4dToString.\n");
7497 cc = ptr->v->sfmatrix4d.c;
7499 memset(buff, 0, STRING);
7500 sprintf(buff,
"%.9g %.9g %.9g %.9g, %.9g %.9g %.9g %.9g, %.9g %.9g %.9g %.9g, %.9g %.9g %.9g %.9g",
7501 cc[0], cc[1], cc[2], cc[3],
7502 cc[4], cc[5], cc[6], cc[7],
7503 cc[8], cc[9], cc[10], cc[11],
7504 cc[12], cc[13], cc[14], cc[15]
7506 _str = JS_NewStringCopyZ(cx, buff);
7508 JS_SET_RVAL(cx, vp, STRING_TO_JSVAL(_str));
7513SFMatrix4dAssign(JSContext* cx, uintN argc, jsval* vp) {
7514 JSObject* obj = JS_THIS_OBJECT(cx, vp);
7515 jsval* argv = JS_ARGV(cx, vp);
7516 JSString* _id_jsstr;
7517 JSObject* _from_obj;
7522#ifdef JSVRMLCLASSESVERBOSE
7523 printf(
"start of SFMatrix4dAssign\n");
7526 if (SM_method() == 2) {
7527 AnyNative* lhs, * rhs;
7528 if ((lhs = (AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
7529 printf(
"JS_GetPrivate failed for obj in SFMatrix4dAssign.\n");
7532 if (!(*vp).isObject())
7534 if ((rhs = (AnyNative*)JS_GetPrivateFw(cx, JSVAL_TO_OBJECT(*vp))) == NULL) {
7535 printf(
"in SFMatrix4dAssign, RHS was NOT native type \n");
7538 AnyNativeAssign(lhs, rhs);
7541 JS_SET_RVAL(cx, vp, OBJECT_TO_JSVAL(obj));
7543#ifdef JSVRMLCLASSESVERBOSE
7544 printf(
"end of SFMatrix4dAssign\n");
7551SFMatrix4dConstr(JSContext* cx, uintN argc, jsval* vp) {
7552 JSObject* obj = JS_NewObject(cx, &SFMatrix4dClass, NULL, NULL);
7553 jsval* argv = JS_ARGV(cx, vp);
7558 if (SM_method() == 2) {
7560 if ((any = (AnyNative*)AnyNativeNew(FIELDTYPE_SFMatrix4d, NULL, NULL)) == NULL) {
7561 printf(
"SFMatrix4dNativeNew failed in SFMatrix4dConstr.\n");
7565 if (!JS_SetPrivateFw(cx, obj, any)) {
7566 printf(
"JS_SetPrivate failed in SFMatrix4dConstr.\n");
7569 cc = any->v->sfmatrix4d.c;
7574 JSObject* _arrayObj;
7577 if (!JS_ValueToObject(cx, argv[0], &_arrayObj)) {
7578 printf(
"JS_ValueToObject failed in SFMatrix4dConstr.\n");
7582 if (JS_IsArrayObject(cx, _arrayObj)) {
7588 JS_GetArrayLength(cx, _arrayObj, &lengthp);
7589 ncopy = lengthp > 16 ? 16 : lengthp;
7590 for (
int i = 0; i < ncopy; i++) {
7591 JS_GetElement(cx, _arrayObj, i, &vp);
7592 if (JS_ValueToNumber(cx, vp, &_d))
7599 if ((ptr = (AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
7600 printf(
"JS_GetPrivate failed in SFMatrix4dConstr.\n");
7603 shallow_copy_field_precision(ptr->type, FIELDTYPE_SFMatrix4d, ptr->v, (
union anyVrml*)cc);
7606 else if (argc == 16) {
7607 if (!JS_ConvertArguments(cx, argc, argv,
"d d d d d d d d d d d d d d d d",
7608 &(pars[0]), &(pars[1]), &(pars[2]), &(pars[3]),
7609 &(pars[4]), &(pars[5]), &(pars[6]), &(pars[7]),
7610 &(pars[8]), &(pars[9]), &(pars[10]), &(pars[11]),
7611 &(pars[12]), &(pars[13]), &(pars[14]), &(pars[15])
7614 printf(
"JS_ConvertArguments failed in SFMatrix4dConstr.\n");
7617 for (
int i = 0; i < 16; i++)
7618 cc[i] = (
double)pars[i];
7620 JS_SET_RVAL(cx, vp, OBJECT_TO_JSVAL(obj));
7625SFMatrix4dGetProperty(JSContext* cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp) {
7626 JSObject* obj = *hobj.address();
7627 jsid iid = *hiid.address();
7628 jsval* vp = hvp.address();
7634 if (!JS_IdToValue(cx, iid, &
id)) {
7635 printf(
"JS_IdToValue failed in SFMatrix4dGetProperty.\n");
7639 if (SM_method() == 2) {
7641 if ((ptr = (AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
7642 printf(
"JS_GetPrivate failed in SFMatrix4dGetProperty.\n");
7645 cc = ptr->v->sfmatrix4d.c;
7647 if (JSVAL_IS_INT(
id)) {
7648 int ii = JSVAL_TO_INT(
id);
7649 if (ii > -1 && ii < 16) {
7651 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
7653 "JS_NewDouble failed for %f in SFMatrix4dGetProperty.\n",
7667SFMatrix4dSetProperty(JSContext* cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp) {
7668 JSObject* obj = *hobj.address();
7669 jsid iid = *hiid.address();
7670 jsval* vp = hvp.address();
7677 if (!JS_IdToValue(cx, iid, &
id)) {
7678 printf(
"JS_IdToValue failed in SFMatrix4dSetProperty.\n");
7682 if (SM_method() == 2) {
7684 if ((ptr = (AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
7685 printf(
"JS_GetPrivate failed in SFMatrix4dSetProperty.\n");
7688 if (ptr->valueChanged)
7689 (*ptr->valueChanged)++;
7690 cc = ptr->v->sfmatrix4d.c;
7692 if (!JS_ConvertValue(cx, *vp, JSTYPE_NUMBER, &myv)) {
7693 printf(
"JS_ConvertValue failed in SFMatrix3fSetProperty.\n");
7697 if (JSVAL_IS_INT(
id)) {
7698 int ii = JSVAL_TO_INT(
id);
7699 if (ii > -1 && ii < 16)
7700 cc[ii] = (double)JSVAL_TO_DOUBLE(myv);