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){
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);
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;
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;
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;
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){
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);
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)
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;
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;
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;
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);
1100 #ifdef JSVRMLCLASSESVERBOSE
1101 printf(
"SFImageToString: obj = %p, %u args\n", obj, argc);
1108 return doMFToString(cx, obj,
"SFImage", rval);
1110 retval = doMFToString(cx, obj,
"SFImage", &rval);
1111 JS_SET_RVAL(cx,vp,rval);
1118SFImageAssign(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
1120SFImageAssign(JSContext *cx, uintN argc, jsval *vp) {
1121 JSObject *obj = JS_THIS_OBJECT(cx,vp);
1122 jsval *argv = JS_ARGV(cx,vp);
1127 #ifdef JSVRMLCLASSESVERBOSE
1128 printf(
"SFImageAssign: obj = %p, %u args\n", obj, argc);
1132 return _standardMFAssign (cx, obj, argc, argv, rval, &SFImageClass,FIELDTYPE_SFImage);
1134 retval = _standardMFAssign (cx, obj, argc, argv, &rval, &SFImageClass,FIELDTYPE_SFImage);
1135 JS_SET_RVAL(cx,vp,rval);
1142SFImageConstr(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
1144SFImageConstr(JSContext *cx, uintN argc, jsval *vp) {
1145 JSObject *obj = JS_NewObject(cx,&SFImageClass,NULL,NULL);
1146 jsval *argv = JS_ARGV(cx,vp);
1157 #ifdef JSVRMLCLASSESVERBOSE
1158 printf(
"SFImageConstr: obj = %p, %u args\n", obj, argc);
1164 if ((ptr = (
AnyNative *) AnyNativeNew(FIELDTYPE_SFImage,NULL,NULL)) == NULL) {
1165 printf(
"SFImageNativeNew failed in SFImageConstr.\n");
1169 if (!JS_SetPrivateFw(cx, obj, ptr)) {
1170 printf(
"JS_SetPrivate failed in SFImageConstr.\n");
1179 printf(
"SFImageNativeNew failed in SFImageConstr.\n");
1183 if (!JS_SetPrivateFw(cx, obj, ptr)) {
1184 printf(
"JS_SetPrivate failed in SFImageConstr.\n");
1188 ptr->valueChanged = 1;
1199 mv = INT_TO_JSVAL(0);
1200 for (i=0; i<4; i++) {
1203 MFInt32Constr(cx, obj, 0, NULL, &mv);
1213 MFInt32ConstrInternals(cx, obj, 0, NULL, &mv);
1216 if (!JS_DefineElement(cx, obj, (jsuint) i, mv, JS_GET_PROPERTY_STUB, JS_SET_PROPERTY_STUB6, JSPROP_ENUMERATE)) {
1217 printf(
"JS_DefineElement failed for arg %d in SFImageConstr.\n", i);
1221 DEFINE_LENGTH(cx,obj,4)
1222#if JS_VERSION >= 185
1224 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
1230 if ((argc != 4) && (argc != 3)) {
1231 printf (
"SFImageConstr, expect 4 parameters, got %d\n",argc);
1236 DEFINE_LENGTH(cx,obj,argc)
1239 for (i=0; i<3; i++) {
1241 if (JSVAL_IS_INT(argv[i])) {
1243 param[i] = JSVAL_TO_INT(argv[i]);
1246 printf (
"SFImageConstr: parameter %d is not a number\n",i);
1251 expectedSize = param[0] * param[1];
1255 if ((param[2]<0) || (param[2]>4)) {
1257 printf (
"SFImageConstr: with size > 0, comp must be between 1 and 4 inclusive, got %d\n",param[2]);
1262 if ((expectedSize == 0) && (param[2] != 0)) {
1263 printf (
"SFImageConstr: with x and y equal to zero, comp must be zero\n");
1267 if ((expectedSize != 0) && (param[2] == 0)) {
1268 printf (
"SFImageConstr: with x and y not zero, comp must be non-zero\n");
1276 #ifdef JSVRMLCLASSESVERBOSE
1277 printJSNodeType(cx,JSVAL_TO_OBJECT(argv[3]));
1280 CHECK_CLASS(cx,JSVAL_TO_OBJECT(argv[3]),NULL,__FUNCTION__,MFInt32Class)
1281 if (!JS_GetProperty(cx, JSVAL_TO_OBJECT(argv[3]), MF_LENGTH_FIELD, &mv)) {
1282 printf(
"JS_GetProperty failed for MFInt32 length in SFImageConstr\n");
1285 if (expectedSize != JSVAL_TO_INT(mv)) {
1286 printf (
"SFImageConstr: expected %d elements in image data, got %d\n",expectedSize, JSVAL_TO_INT(mv));
1292 for (i=0; i<argc; i++) {
1293 if (!JS_DefineElement(cx, obj, (jsint) i, argv[i], JS_GET_PROPERTY_STUB, JS_SET_PROPERTY_STUB6, JSPROP_ENUMERATE)) {
1294 printf(
"JS_DefineElement failed for arg %d in SFImageConstr.\n", i);
1301 *rval = OBJECT_TO_JSVAL(obj);
1303 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
1309SFImageAddProperty(JSContext *cx, JSObject *obj, jsid
id, jsval *vp) {
1310 return doMFAddProperty(cx, obj,
id, vp,
"SFImage");
1314JSBool SFImageGetProperty(JSContext *cx, JSObject *obj, jsid
id, jsval *vp) {
1316JSBool SFImageGetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp){
1317 JSObject *obj = *hobj.address();
1318 jsid
id = *hiid.address();
1319 jsval *vp = hvp.address();
1321 return _standardMFGetProperty(cx, obj,
id, vp,
"_FreeWRL_Internal = 0", FIELDTYPE_SFImage);
1327SFImageSetProperty(JSContext *cx, JSObject *obj, jsid
id, jsval *vp) {
1328#elif JS_VERSION == 185
1329SFImageSetProperty(JSContext *cx, JSObject *obj, jsid
id, JSBool strict, jsval *vp){
1331SFImageSetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp){
1332 JSObject *obj = *hobj.address();
1333 jsid
id = *hiid.address();
1334 jsval *vp = hvp.address();
1336 return doMFSetProperty(cx, obj,
id, vp, FIELDTYPE_SFImage);
1345SFNodeValueOf(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
1347SFNodeValueOf(JSContext *cx, uintN argc, jsval *vp) {
1348 JSObject *obj = JS_THIS_OBJECT(cx,vp);
1349 jsval *argv = JS_ARGV(cx,vp);
1351 jsval *rval = &rvalinst;
1358 if(SM_method() == 2){
1360 if ((nany = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
1361 printf(
"JS_GetPrivate failed in SFNodeToString.\n");
1364 handle = nany->v->sfnode;
1366 #ifdef JSVRMLCLASSESVERBOSE
1367 printf (
"SFNODETOSTRING\n");
1369 if ((ptr = (
SFNodeNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
1370 printf(
"JS_GetPrivate failed in SFNodeToString.\n");
1373 handle = ptr->handle;
1387 sprintf (tmpline,
"%p",handle);
1392 nv = strtod(tmpline,NULL);
1396 if (!JS_NewNumberValue(cx, nv, rval)) {
1397 ConsoleMessage (
"Conversion issue in SFNodeToString");
1402 #ifdef JSVRMLCLASSESVERBOSE
1403 printf (
"SFNodeToString, handle %p ",ptr->handle);
1404 printf (
"SFNodeToString, handle as unsignned %u ",(
unsigned int)ptr->handle);
1405 if (ptr->handle != NULL) {
1406 printf (
" (%s) ", stringNodeType (((
struct X3D_Node *)ptr->handle)->_nodeType));
1408 printf (
"string \"%s\"\n",ptr->X3DString);
1411#if JS_VERSION >= 185
1412 JS_SET_RVAL(cx,vp,*rval);
1419SFNodeToString(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
1421SFNodeToString(JSContext *cx, uintN argc, jsval *vp) {
1422 JSObject *obj = JS_THIS_OBJECT(cx,vp);
1423 jsval *argv = JS_ARGV(cx,vp);
1425 jsval *rval = &rvalinst;
1433 #ifdef JSVRMLCLASSESVERBOSE
1434 printf (
"SFNODETOSTRING\n");
1436 if(SM_method() == 2){
1438 if ((nany = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
1439 printf(
"JS_GetPrivate failed in SFNodeToString.\n");
1442 handle = nany->v->sfnode;
1445 if ((ptr = (
SFNodeNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
1446 printf(
"JS_GetPrivate failed in SFNodeToString.\n");
1449 handle = ptr->handle;
1464 memset(buff, 0, STRING);
1465 sprintf (buff,
"_%p_",handle);
1470 _str = JS_NewStringCopyZ(cx, buff);
1473 *rval = STRING_TO_JSVAL(_str);
1475 JS_SET_RVAL(cx,vp,STRING_TO_JSVAL(_str));
1478 REMOVE_ROOT (cx,_str)
1489SFNodeAssign(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
1491SFNodeAssign(JSContext *cx, uintN argc, jsval *vp) {
1492 JSObject *obj = JS_THIS_OBJECT(cx,vp);
1493 jsval *argv = JS_ARGV(cx,vp);
1494 JSString *_id_jsstr;
1497 JSObject *_from_obj;
1502 if(SM_method() == 2){
1505 if ((*vp).isObject()){
1506 if ((rhs = (
AnyNative *)JS_GetPrivateFw(cx, JSVAL_TO_OBJECT(*vp))) != NULL) {
1507 if ((lhs = (
AnyNative *)JS_GetPrivateFw(cx, obj)) != NULL) {
1508 AnyNativeAssign(lhs,rhs);
1516 #ifdef JSVRMLCLASSESVERBOSE
1517 printf (
"start of SFNodeAssign argc %d\n",argc);
1521 CHECK_CLASS(cx,obj,argv,__FUNCTION__,SFNodeClass)
1524 if ((ptr = (
SFNodeNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
1525 printf(
"JS_GetPrivate failed for obj in SFNodeAssign.\n");
1530 #ifdef JSVRMLCLASSESVERBOSE
1531 printf (
"SFNodeAssign, we have %d and %d\n",(
int)argv[0], (
int)argv[1]);
1535 if (!JS_ConvertArguments(cx, argc, argv,
"o s", &_from_obj, &_id_str)) {
1537 if (JS_ConvertArguments(cx, argc, argv,
"oS", &_from_obj, &_id_jsstr) == JS_TRUE) {
1538 _id_str = JS_EncodeString(cx,_id_jsstr);
1541 printf(
"JS_ConvertArguments failed in SFNodeAssign.\n");
1544 if (_from_obj != NULL) {
1545 CHECK_CLASS(cx,_from_obj,argv,__FUNCTION__,SFNodeClass)
1547 if ((fptr = (
SFNodeNative *)JS_GetPrivateFw(cx, _from_obj)) == NULL) {
1548 printf(
"JS_GetPrivate failed for _from_obj in SFNodeAssign.\n");
1551 #ifdef JSVRMLCLASSESVERBOSE
1552 printf(
"SFNodeAssign: obj = %p, id = \"%s\", from = %p\n",
1553 obj, _id_str, _from_obj);
1555 }
else { fptr = NULL; }
1558 if (!SFNodeNativeAssign(ptr, fptr)) {
1559 printf(
"SFNodeNativeAssign failed in SFNodeAssign.\n");
1564 *rval = OBJECT_TO_JSVAL(obj);
1566 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
1569 #ifdef JSVRMLCLASSESVERBOSE
1570 printf (
"end of SFNodeAssign\n");
1580SFNodeEquals(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
1582 jsval *rval = &rvalinst;
1584SFNodeEquals(JSContext *cx, uintN argc, jsval *vp) {
1585 JSObject *obj = JS_THIS_OBJECT(cx,vp);
1586 jsval *argv = JS_ARGV(cx,vp);
1589 JSObject *_from_obj;
1592 if(SM_method() == 2){
1596 if ((*vp).isObject()) {
1597 if ((rhs = (
AnyNative *)JS_GetPrivateFw(cx, JSVAL_TO_OBJECT(*vp))) != NULL) {
1598 if ((lhs = (
AnyNative *)JS_GetPrivateFw(cx, obj)) != NULL) {
1599 iret = lhs->v->sfnode == rhs->v->sfnode ? 1 : 0;
1607 if ((ptr = (
SFNodeNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
1608 printf(
"JS_GetPrivate failed in SFNodeNative.\n");
1611 if (!JS_ConvertArguments(cx, argc, argv,
"o",
1613 printf(
"JS_ConvertArguments failed in SFNodeNative.\n");
1618 if (_from_obj != NULL) {
1619 CHECK_CLASS(cx,_from_obj,argv,__FUNCTION__,SFNodeClass)
1621 if ((fptr = (
SFNodeNative *)JS_GetPrivateFw(cx, _from_obj)) == NULL) {
1622 printf(
"JS_GetPrivate failed for _from_obj in SFNodeAssign.\n");
1625 #ifdef JSVRMLCLASSESVERBOSE
1626 printf(
"SFNodeAssign: obj = %p, id = \"%s\", from = %p\n",
1627 obj, _id_str, _from_obj);
1629 }
else { fptr = NULL; }
1633 iret = SFNodeNativeEquals(ptr, fptr);
1636 *rval = BOOLEAN_TO_JSVAL(iret);
1638 JS_SET_RVAL(cx,vp,BOOLEAN_TO_JSVAL(iret));
1641 #ifdef JSVRMLCLASSESVERBOSE
1642 printf (
"end of SFNodeEqual\n");
1654SFNodeConstr(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
1656SFNodeConstr(JSContext *cx, uintN argc, jsval *vp) {
1657 JSObject *obj = JS_NewObject(cx,&SFNodeClass,NULL,NULL);
1658 jsval *argv = JS_ARGV(cx,vp);
1700 #ifdef JSVRMLCLASSESVERBOSE
1701 printf (
"Start of SFNodeConstr argc %d object %p\n",argc,obj);
1707 cString = STRDUP(
"SFNodeConstr from argc eq 0");
1708 }
else if (argc == 1) {
1710 myStr = JS_ValueToString(cx, argv[0]);
1712 cString = JS_GetStringBytes(myStr);
1714 cString = JS_EncodeString(cx,myStr);
1716 #ifdef JSVRMLCLASSESVERBOSE
1717 printf (
"SFNodeConstr, argc =1l string %s\n",cString);
1722 if (argv[0].isObject()) {
1724 #ifdef JSVRMLCLASSESVERBOSE
1725 printf (
"SFNodeConstr, cstring was an object\n");
1727 if(SM_method() == 2){
1729 if ((rhs = (
AnyNative *)JS_GetPrivateFw(cx, JSVAL_TO_OBJECT(argv[0]))) == NULL) {
1730 #ifdef JSVRMLCLASSESVERBOSE
1731 printf(
"JS_GetPrivate failed in SFNodeConstr.\n");
1736 newHandle = rhs->v->sfnode;
1739 if ((oldPtr = (
SFNodeNative *)JS_GetPrivateFw(cx, JSVAL_TO_OBJECT(argv[0]))) == NULL) {
1740 #ifdef JSVRMLCLASSESVERBOSE
1741 printf(
"JS_GetPrivate failed in SFNodeConstr.\n");
1746 newHandle = oldPtr->handle;
1748 if(SM_method() == 0)
1749 cString = STRDUP(oldPtr->X3DString);
1752 #ifdef JSVRMLCLASSESVERBOSE
1753 printf (
"SFNodeConstr, cstring was NOT an object\n");
1757 if (!((cString[0] >=
'A' && cString [0] <=
'Z')||(cString[0] >=
'a' && cString [0] <=
'z'))) {
1759 if (sscanf (cString,
"%p",&newHandle) != 1) {
1760 ConsoleMessage (
"expected pointer for Javascript SFNode constr, got :%s:",cString);
1762 #ifdef JSVRMLCLASSESVERBOSE
1763 printf (
"SFNodeConstr, expected pointer for Javascript SFNode constr, got :%s:\n",cString);
1765 printf (
"SFNodeConstr, got pointer for Javascript SFNode constr, :%p:\n",newHandle);
1774 res->whereToPlaceData = myGroup;
1775 res->ectx = myGroup;
1776 res->media_type = resm_vrml;
1777 res->parsed_request = strdup(
"From the EAI bootcamp of life ");
1778 res->offsetFromWhereToPlaceData = (int) offsetof (
struct X3D_Group, children);
1779 #ifdef JSVRMLCLASSESVERBOSE
1780 printf (
"SFNodeConstr, sending resource to parser\n");
1783 #ifdef JSVRMLCLASSESVERBOSE
1784 printf (
"SFNodeConstr, waiting on resource\n");
1788 #ifdef JSVRMLCLASSESVERBOSE
1789 printf (
"SFNodeConstr we have created %d nodes\n",myGroup->children.n);
1797 parser_process_res_VRML_X3D(res);
1798 newHandle = X3D_NODE(myGroup->children.p[0]);
1801 cString = STRDUP(
"node created in SFNodeConstr");
1804 }
else if (argc == 2) {
1807 #ifdef JSVRMLCLASSESVERBOSE
1808 printf (
"SFNodeConstr - have 2 arguments\n");
1811 if ((JSVAL_IS_STRING(argv[0])) && (JSVAL_IS_STRING(argv[1]))) {
1815 _idStr = JS_ValueToString(cx, argv[0]);
1817 _id_c = JS_GetStringBytes(_idStr);
1819 _id_c = JS_EncodeString(cx,_idStr);
1823 cString = STRDUP(_id_c);
1825 _idStr = JS_ValueToString(cx, argv[1]);
1827 _id_c = JS_GetStringBytes(_idStr);
1829 _id_c = JS_EncodeString(cx,_idStr);
1833 if (sscanf (_id_c,
"%p",&newHandle) != 1) {
1834 printf (
"SFNodeConstr - can not get handle from %s\n",_id_c);
1839 #ifdef JSVRMLCLASSESVERBOSE
1840 printf (
"string is :%s: new handle is %p\n",cString,newHandle);
1844 printf (
"SFNodeConstr - 2 args, expected 2 strings\n");
1850 printf(
"SFNodeConstr requires at least 1 string arg.\n");
1854 if(SM_method() == 2){
1856 if ((lhs = (
AnyNative *) AnyNativeNew(FIELDTYPE_SFNode,NULL,NULL)) == NULL) {
1857 printf(
"AnyNativeNew failed in SFNodeConstr.\n");
1860 if (!JS_SetPrivateFw(cx, obj, lhs)) {
1861 printf(
"JS_SetPrivate failed in SFNodeConstr.\n");
1865 lhs->v->sfnode = newHandle;
1868 if ((newPtr = (
SFNodeNative *) SFNodeNativeNew()) == NULL) {
1869 printf(
"SFNodeNativeNew failed in SFNodeConstr.\n");
1878 if (!JS_SetPrivateFw(cx, obj, newPtr)) {
1879 printf(
"JS_SetPrivate failed in SFNodeConstr.\n");
1883 newPtr->handle = newHandle;
1884 if(SM_method() == 0){
1885 newPtr->X3DString = (
char *)STRDUP(cString);
1887 if (!JS_DefineSFNodeSpecificProperties (cx, obj, newHandle)) {
1888 printf(
"JS_DefineSFNodeSpecificProperties failed in SFNodeConstr.\n");
1894 newPtr->valueChanged = 1;
1897 #ifdef JSVRMLCLASSESVERBOSE
1899 if (newHandle == NULL)
1900 printf(
"end of SFNodeConstr: created obj = %p, argc: %u mem ptr: %p (null pointer) text string: %s\n",
1901 obj, argc, newHandle, cString);
1903 printf(
"end of SFNodeConstr: created obj = %p, argc: %u mem ptr: %p (%s) text string: %s\n",
1904 obj, argc, newHandle, stringNodeType(newHandle->_nodeType),cString);
1909 *rval = OBJECT_TO_JSVAL(obj);
1911 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
1921SFNodeFinalize(JSContext *cx, JSObject *obj){
1923SFNodeFinalize(JSFreeOp *fop, JSObject *obj){
1924JSContext *cx = NULL;
1929 #ifdef JSVRMLCLASSESVERBOSE
1930 printf(
"SFNodeFinalize: obj = %p\n", obj);
1946 if ((ptr = (
SFNodeNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
1950 if(SM_method() == 0)
1951 FREE_IF_NZ (ptr->X3DString);
1952 if(SM_method() == 2){
1954 if(any->gc) FREE_IF_NZ(any->v);
1958 JS_SetPrivateFw(cx,obj,NULL);
1963void X3D_ECMA_TO_JS(JSContext *cx,
void *Data,
int datalen,
int dataType, jsval *newval);
1964void X3D_MF_TO_JS(JSContext *cx, JSObject *obj,
void *Data,
int dataType, jsval *newval,
char *fieldName);
1965void X3D_SF_TO_JS(JSContext *cx, JSObject *obj,
void *Data,
unsigned datalen,
int dataType, jsval *newval);
1966void X3D_MF_TO_JS_B(JSContext *cx,
void *Data,
int dataType,
int *valueChanged, jsval *newval);
1967void X3D_SF_TO_JS_B(JSContext *cx,
void *Data,
unsigned datalen,
int dataType,
int *valueChanged, jsval *newval);
1968int getFieldFromNodeAndName(
struct X3D_Node* node,
const char *fieldname,
int *type,
int *kind,
int *iifield,
union anyVrml **value);
1971SFNodeGetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp){
1972#elif JS_VERSION == 185
1973SFNodeGetProperty(JSContext *cx, JSObject *obj, jsid iid, jsval *vp){
1975SFNodeGetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp){
1976 JSObject *obj = *hobj.address();
1977 jsid iid = *hiid.address();
1978 jsval *vp = hvp.address();
1990#if JS_VERSION >= 185
1992 if (!JS_IdToValue(cx,iid,&
id)) {
1993 printf(
"JS_IdToValue failed in SFNodeGetProperty.\n");
1997 if (JSVAL_IS_INT(
id)) {
1998 printf(
"SFNode has no [index] property.\n");
2004 _idStr = JS_ValueToString(cx,
id);
2006 _id_c = JS_GetStringBytes(_idStr);
2008 _id_c = JS_EncodeString(cx,_idStr);
2010 #ifdef JSVRMLCLASSESVERBOSE
2011 printf (
"start of SFNodeGetProperty... id is %s\n",_id_c);
2015 if (strcmp (
"undefined",_id_c) == 0)
return JS_TRUE;
2018 if (strcmp (
"toString",_id_c) == 0)
return JS_TRUE;
2019 if (strcmp (
"valueOf",_id_c) == 0)
return JS_TRUE;
2020 if (strcmp (
"equals",_id_c) == 0)
return JS_TRUE;
2021 if (strcmp (
"assign",_id_c) == 0)
return JS_TRUE;
2024 if ((ptr = (
SFNodeNative *)JS_GetPrivateFw(cx, obj)) != NULL) {
2025 int ifound, type, kind, iifield, *valueChanged, sfsize, sftype;
2027 char *fieldname = _id_c;
2029 if(SM_method() == 2){
2031 node = any->v->sfnode;
2035 #ifdef JSVRMLCLASSESVERBOSE
2036 printf (
"SFNodeGetProperty, working on node %p, field %s\n",ptr->handle,_id_c);
2038 if(SM_method() == 2){
2039 ifound = getFieldFromNodeAndName(node,fieldname,&type,&kind,&iifield,&value);
2041 valueChanged = &node->_change;
2043 if(node->_nodeType == NODE_Script){
2045 struct X3D_Script *scriptnode = X3D_SCRIPT(node);
2046 getFieldFromScript((
struct Shader_Script*)scriptnode->__scriptObj,fieldname,&type,&kind,&iifield,&value,&valueChanged);
2048 sftype = type2SF(type);
2049 sfsize = sizeofSForMF(sftype);
2053 case FIELDTYPE_SFBool:
2054 case FIELDTYPE_SFFloat:
2055 case FIELDTYPE_SFTime:
2056 case FIELDTYPE_SFDouble:
2057 case FIELDTYPE_SFInt32:
2058 case FIELDTYPE_SFString:
2059 X3D_ECMA_TO_JS(cx, value,sfsize,type,vp);
2061 case FIELDTYPE_SFColor:
2062 case FIELDTYPE_SFNode:
2063 case FIELDTYPE_SFVec2f:
2065 case FIELDTYPE_SFVec3f:
2066 case FIELDTYPE_SFVec3d:
2067 case FIELDTYPE_SFVec4f:
2068 case FIELDTYPE_SFVec4d:
2070 case FIELDTYPE_SFRotation:
2071 X3D_SF_TO_JS_B(cx, value,sfsize, type, valueChanged, vp);
2073 case FIELDTYPE_MFColor:
2074 case FIELDTYPE_MFVec3f:
2075 case FIELDTYPE_MFVec2f:
2076 case FIELDTYPE_MFFloat:
2077 case FIELDTYPE_MFTime:
2078 case FIELDTYPE_MFInt32:
2079 case FIELDTYPE_MFString:
2080 case FIELDTYPE_MFNode:
2081 case FIELDTYPE_MFRotation:
2082 case FIELDTYPE_SFImage:
2084 X3D_MF_TO_JS_B(cx, value, type, valueChanged, vp);
2086 default: printf (
"unhandled type FIELDTYPE_ %d in getSFNodeField\n", type) ;
2099 if(SM_method() == 0){
2102 if( ptr->handle && ptr->handle->_nodeType== NODE_Script )
2108 myObj = (
struct Shader_Script*)X3D_SCRIPT(ptr->handle)->__scriptObj;
2110 ScriptControl = getScriptControlIndex(myObj->num);
2111 cx2 = (JSContext*)ScriptControl->cx;
2112 obj2 = (JSObject*)ScriptControl->glob;
2113 if (JS_GetProperty (cx2, obj2, _id_c, &rval)) {
2114 if (JSVAL_IS_NULL(rval)) {
2115 ConsoleMessage (
"Script - field :%s: does not exist",_id_c);
2124 JS_DefineSFNodeSpecificProperties (cx, obj, ptr->handle);
2127 if (JS_LookupProperty (cx, obj, _id_c, &rval)) {
2128 if (JSVAL_IS_NULL(rval)) {
2131 ConsoleMessage (
"SFNode - field :%s: does not exist",_id_c);
2136 #ifdef JSVRMLCLASSESVERBOSE
2137 printf (
"wondering about rval.. %d. it is a\n",(
int)rval);
2138 if (JSVAL_IS_INT(rval)) printf (
"IS AN INT\n");
2139 if (JSVAL_IS_OBJECT(rval)) printf (
"IS AN OBJECT\n");
2140 if (JSVAL_IS_STRING(rval)) printf (
"IS AN STRING\n");
2141 if (rval == JSVAL_FALSE) printf (
"FALSE\n");
2142 if (rval == JSVAL_NULL) printf (
"NULL\n");
2143 if (rval == JSVAL_ONE) printf (
"ONE\n");
2144 if (rval == JSVAL_ZERO) printf (
"ZERO\n");
2145 if (rval == JSVAL_VOID) printf (
"VOID\n");
2146 if (rval == JSVAL_TRUE) printf (
"TRUE\n");
2154 #ifdef JSVRMLCLASSESVERBOSE
2155 printf (
"SFNodeGetProperty, found field \"%s\" in node, returning property\n",_id_c);
2160 #ifdef JSVRMLCLASSESVERBOSE
2161 printf (
"SFNodeGetProperty, did not find field \"%s\" in node.\n",_id_c);
2167 printf (
"could not get private for SFNodeGetProperty, field :%s:\n",_id_c);
2174void Parser_scanStringValueToMem_B(
union anyVrml* any, indexT ctype,
const char *value,
int isXML);
2175void JS_MF_TO_X3D(JSContext *cx, JSObject * obj,
void *Data,
int dataType, jsval *newval);
2178SFNodeSetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp){
2179#elif JS_VERSION == 185
2180SFNodeSetProperty(JSContext *cx, JSObject *obj, jsid iid, JSBool strict, jsval *vp){
2182SFNodeSetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp){
2183 JSObject *obj = *hobj.address();
2184 jsid iid = *hiid.address();
2185 jsval *vp = hvp.address();
2187 JSString *_idStr, *_valStr;
2188 char *_id_c, *_val_c;
2192#if JS_VERSION >= 185
2194 if (!JS_IdToValue(cx,iid,&
id)) {
2195 printf(
"JS_IdToValue failed in SFNodeSetProperty.\n");
2199 if(SM_method() == 2){
2201 int ifound, type, kind, iifield, *valueChanged, sfsize, sftype;
2206 if((lhs = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
2209 _idStr = JS_ValueToString(cx,
id);
2211 _id_c = JS_GetStringBytes(_idStr);
2213 _id_c = JS_EncodeString(cx,_idStr);
2216 node = lhs->v->sfnode;
2217 ifound = getFieldFromNodeAndName(node,fieldname,&type,&kind,&iifield,&value);
2219 valueChanged = &node->_change;
2220 if(node->_nodeType == NODE_Script){
2222 struct X3D_Script *scriptnode = X3D_SCRIPT(node);
2223 getFieldFromScript((
struct Shader_Script*)scriptnode->__scriptObj,fieldname,&type,&kind,&iifield,&value,&valueChanged);
2225 sftype = type2SF(type);
2226 sfsize = sizeofSForMF(sftype);
2229 if( JSVAL_IS_NULL(*vp)){
2230 if(type == FIELDTYPE_SFNode)
2231 value->sfnode = NULL;
2235 }
else if ((*vp).isObject()) {
2237 if ((rhs = (
AnyNative *)JS_GetPrivateFw(cx, JSVAL_TO_OBJECT(*vp))) == NULL) {
2242 if(type == rhs->type){
2247 shallow_copy_field(rhs->type,rhs->v,value);
2254 case FIELDTYPE_SFBool:
2255 case FIELDTYPE_SFFloat:
2256 case FIELDTYPE_SFTime:
2257 case FIELDTYPE_SFDouble:
2258 case FIELDTYPE_SFInt32:
2259 case FIELDTYPE_SFString:
2260 JS_ECMA_TO_X3D(cx, value,sfsize,type,vp);
2287 printf (
"unhandled type FIELDTYPE_ %d in setSFNodeField\n", type) ;
2309 _idStr = JS_ValueToString(cx,
id);
2310 _valStr = JS_ValueToString(cx, *vp);
2312 _id_c = JS_GetStringBytes(_idStr);
2313 _val_c = JS_GetStringBytes(_valStr);
2315 _id_c = JS_EncodeString(cx,_idStr);
2316 _val_c = JS_EncodeString(cx,_valStr);
2320 #ifdef JSVRMLCLASSESVERBOSE
2321 printf(
"SFNodeSetProperty: obj = %p, id = %s, vp = %s\n",
2322 obj, _id_c, _val_c);
2326 if ((ptr = (
SFNodeNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
2327 printf(
"JS_GetPrivate failed in SFNodeSetProperty.\n");
2331 if (JSVAL_IS_INT(
id)) {
2336 if(SM_method() == 0){
2337 ptr->valueChanged++;
2338 val_len = (int) strlen(_val_c) + 1;
2340 #ifdef JSVRMLCLASSESVERBOSE
2341 printf (
"switching on %d\n",JSVAL_TO_INT(
id));
2344 switch (JSVAL_TO_INT(
id)) {
2346 if ((strlen(ptr->X3DString) + 1) > val_len) {
2348 (
char *) REALLOC (ptr->X3DString, val_len *
sizeof(
char));
2350 memset(ptr->X3DString, 0, val_len);
2351 memmove(ptr->X3DString, _val_c, val_len);
2354 scanUnsignedIntoValue(_val_c,&tmp);
2355 ptr->handle = X3D_NODE(tmp);
2360 #ifdef JSVRMLCLASSESVERBOSE
2361 printf (
"JS_IS_INT false\n");
2363 printf (
"SFNodeSetProperty, setting node %p field %s to value %s\n", ptr->handle,_id_c,_val_c);
2367 ptx = X3D_NODE(ptr->handle);
2368 printf (
"node is of type %s\n",stringNodeType(ptx->_nodeType));
2373 if( ptr->handle->_nodeType== NODE_Script )
2380 char scriptline[100];
2381 JSScript *eventInFunction;
2392 myObj = (
struct Shader_Script*)X3D_SCRIPT(ptr->handle)->__scriptObj;
2394 ScriptControl = getScriptControlIndex(myObj->num);
2395 if ((!ScriptControl->_initialized) || (!ScriptControl->scriptOK)) {
2401 cx2 = (JSContext*)ScriptControl->cx;
2402 obj2 = (JSObject*)ScriptControl->glob;
2409 JSAutoRequest ar(cx);
2412 JSAutoCompartment ac(cx, obj2);
2417 JS_NewNumberValue(cx2, TickTime(), &zimbo);
2418 if (!JS_DefineProperty(cx2,obj2,
"__eventInTickTime", zimbo, JS_GET_PROPERTY_STUB, JS_SET_PROPERTY_STUB2, JSPROP_PERMANENT)) {
2419 printf(
"JS_DefineProperty failed for __eventInTickTime at %s:%d.\n",__FILE__,__LINE__);
2426 myfield = script_getField_viaCharName(myObj, _id_c);
2513 strcpy(scriptline,_id_c);
2514 #ifdef JSVRMLCLASSESVERBOSE
2515 printf (
"set_one_ECMAtype, calling JS_DefineProperty on name %s obj %u, setting setECMANative, 0 \n",scriptline,obj2);
2518 if (!JS_DefineProperty(cx2,obj2, scriptline, newval, JS_GET_PROPERTY_STUB, JS_SET_PROPERTY_STUB3, JSPROP_PERMANENT)) {
2519 printf(
"JS_DefineProperty failed for SFNodeSetProperty at %s:%d.\n",__FILE__,__LINE__);
2520 #if defined(JS_THREADSAFE)
2527 JSparamnames = getJSparamnames();
2528 eventInFunction = (JSScript*) JSparamnames[myfield->fieldDecl->JSparamNameIndex].eventInFunction;
2529 if ( eventInFunction == NULL) {
2531 sprintf (scriptline,
"set_%s(%s,__eventInTickTime)", _id_c, _id_c);
2533 eventInFunction = JS_CompileScript(cx2, obj2, scriptline, strlen(scriptline),
"compile eventIn",1);
2536 JSparamnames[myfield->fieldDecl->JSparamNameIndex].eventInFunction = eventInFunction;
2537 #if JS_VERSION >= 185
2538 if (!JS_AddObjectRoot(cx,(JSObject**)(&JSparamnames[myfield->fieldDecl->JSparamNameIndex].eventInFunction))) {
2539 printf(
"JS_AddObjectRoot failed for compilation of script \"%s\" at %s:%d.\n",scriptline,__FILE__,__LINE__);
2549 if (!JS_ExecuteScript(cx2, obj2, eventInFunction, &zimbo))
2551 printf (
"failed to set parameter for eventIn %s in FreeWRL code %s:%d\n",_id_c,__FILE__,__LINE__); \
2564 if(0)
if( ptr->handle->_nodeType== NODE_Script )
2571 script = (
struct Shader_Script*)X3D_SCRIPT(ptr->handle)->__scriptObj;
2573 ScriptControl = getScriptControlIndex(script->num);
2574 if ((!ScriptControl->_initialized) || (!ScriptControl->scriptOK)) {
2578 myfield = script_getField_viaCharName(script, _id_c);
2579 if(!myfield)
return JS_FALSE;
2580 itype = ScriptFieldDecl_getType(myfield);
2581 kind = ScriptFieldDecl_getMode(myfield);
2582 Parser_scanStringValueToMem_B(&myfield->value, itype, _val_c, FALSE);
2583 if(kind == PKW_inputOnly || kind == PKW_inputOutput)
2584 myfield->eventInSet = TRUE;
2585 if(kind == PKW_inputOutput || kind == PKW_outputOnly)
2586 myfield->valueChanged = TRUE;
2590 setField_fromJavascript (X3D_NODE(ptr->handle), _id_c, _val_c, FALSE);
2600SFRotationGetAxis(JSContext *cx, uintN argc, jsval *vp) {
2601 JSObject *obj = JS_THIS_OBJECT(cx,vp);
2602 jsval *argv = JS_ARGV(cx,vp);
2609 #ifdef JSVRMLCLASSESVERBOSE
2610 printf (
"start of SFRotationGetAxis\n");
2613 if ((_retObj = JS_ConstructObjectFw(cx, &SFVec3fClass, NULL, NULL)) == NULL) {
2614 printf(
"JS_ConstructObject failed in SFRotationGetAxis.\n");
2618 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(_retObj));
2623 if ((_rot = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
2624 printf(
"JS_GetPrivate failed for obj in SFRotationGetAxis.\n");
2628 if ((_retNative = (
AnyNative *)JS_GetPrivateFw(cx, _retObj)) == NULL) {
2629 printf(
"JS_GetPrivate failed for _retObj in SFRotationGetAxis.\n");
2632 cc = _rot->v->sfrotation.c;
2633 cclhs = _retNative->v->sfvec3f.c;
2638 printf(
"JS_GetPrivate failed for obj in SFRotationGetAxis.\n");
2642 if ((_retNative = (
SFVec3fNative *)JS_GetPrivateFw(cx, _retObj)) == NULL) {
2643 printf(
"JS_GetPrivate failed for _retObj in SFRotationGetAxis.\n");
2647 cclhs = _retNative->v.c;
2650 veccopy3f(cclhs,cc);
2652 #ifdef JSVRMLCLASSESVERBOSE
2653 printf(
"SFRotationGetAxis: obj = %p, result = [%.9g, %.9g, %.9g]\n",
2655 (_retNative->v).c[0],
2656 (_retNative->v).c[1],
2657 (_retNative->v).c[2]);
2664SFRotationInverse(JSContext *cx, uintN argc, jsval *vp) {
2665 JSObject *obj = JS_THIS_OBJECT(cx,vp);
2666 jsval *argv = JS_ARGV(cx,vp);
2668 JSObject *_retObj, *_proto;
2674 #ifdef JSVRMLCLASSESVERBOSE
2675 printf (
"start of SFRotationInverse\n");
2678 if ((_proto = JS_GetPrototypeFw(cx, obj)) == NULL) {
2679 printf(
"JS_GetPrototype failed in SFRotationInverse.\n");
2682 if ((_retObj = JS_ConstructObjectFw(cx, &SFRotationClass, _proto, NULL)) == NULL) {
2683 printf(
"JS_ConstructObject failed in SFRotationInverse.\n");
2686 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(_retObj));
2692 if ((_rot = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
2693 printf(
"JS_GetPrivate failed for obj in SFRotationInverse.\n");
2697 if ((_retNative = (
AnyNative *)JS_GetPrivateFw(cx, _retObj)) == NULL) {
2698 printf(
"JS_GetPrivate failed for _retObj in SFRotationInverse.\n");
2701 cc = _rot->v->sfrotation.c;
2702 cclhs = _retNative->v->sfrotation.c;
2708 printf(
"JS_GetPrivate failed for obj in SFRotationInverse.\n");
2712 if ((_retNative = (
SFRotationNative *)JS_GetPrivateFw(cx, _retObj)) == NULL) {
2713 printf(
"JS_GetPrivate failed for _retObj in SFRotationInverse.\n");
2716 _retNative->valueChanged = 1;
2718 cclhs = _retNative->v.c;
2721 vrmlrot_to_quaternion(&q1, (
double) cc[0],
2722 (
double) cc[1], (
double)cc[2], (
double) cc[3]);
2725 quaternion_inverse(&qret,&q1);
2729 quaternion_to_vrmlrot(&qret, &a, &b, &c, &d);
2731 cclhs[0] = (float) a;
2732 cclhs[1] = (float) b;
2733 cclhs[2] = (float) c;
2734 cclhs[3] = (float) d;
2742SFRotationMultiply(JSContext *cx, uintN argc, jsval *vp) {
2743 JSObject *obj = JS_THIS_OBJECT(cx,vp);
2744 jsval *argv = JS_ARGV(cx,vp);
2749 JSObject *_multObj, *_proto, *_retObj;
2750 float *cc, *cc1, *cclhs;
2751 #ifdef JSVRMLCLASSESVERBOSE
2752 printf (
"start of SFRotationMultiply\n");
2755 if (!JS_ConvertArguments(cx, argc, argv,
"o", &_multObj)) {
2756 printf(
"JS_ConvertArguments failed in SFRotationMultiply.\n");
2759 CHECK_CLASS(cx,_multObj,argv,__FUNCTION__,SFRotationClass)
2761 if ((_proto = JS_GetPrototypeFw(cx, _multObj)) == NULL) {
2762 printf(
"JS_GetPrototype failed in SFRotationMultiply.\n");
2766 if ((_retObj = JS_ConstructObjectFw(cx, &SFRotationClass, _proto, NULL)) == NULL) {
2767 printf(
"JS_ConstructObject failed in SFRotationMultiply.\n");
2772 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(_retObj));
2777 if ((_rot1 = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
2778 printf(
"JS_GetPrivate failed for obj in SFRotationMultiply.\n");
2782 if ((_rot2 = (
AnyNative *)JS_GetPrivateFw(cx, _multObj)) == NULL) {
2783 printf(
"JS_GetPrivate failed for _multObj in SFRotationMultiply.\n");
2787 if ((_retNative = (
AnyNative *)JS_GetPrivateFw(cx, _retObj)) == NULL) {
2788 printf(
"JS_GetPrivate failed for _retObj in SFRotationMultiply.\n");
2791 cc = _rot1->v->sfrotation.c;
2792 cc1 = _rot2->v->sfrotation.c;
2793 cclhs = _retNative->v->sfrotation.c;
2798 printf(
"JS_GetPrivate failed for obj in SFRotationMultiply.\n");
2803 printf(
"JS_GetPrivate failed for _multObj in SFRotationMultiply.\n");
2807 if ((_retNative = (
SFRotationNative *)JS_GetPrivateFw(cx, _retObj)) == NULL) {
2808 printf(
"JS_GetPrivate failed for _retObj in SFRotationMultiply.\n");
2813 cclhs = _retNative->v.c;
2814 _retNative->valueChanged = 1;
2818 vrmlrot_to_quaternion(&q1, (
double) cc[0],
2819 (
double) cc[1], (
double) cc[2], (
double) cc[3]);
2820 vrmlrot_to_quaternion(&q2, (
double) cc1[0],
2821 (
double) cc1[1], (
double) cc1[2], (
double) cc1[3]);
2824 quaternion_multiply(&qret,&q1,&q2);
2828 quaternion_to_vrmlrot(&qret, &a, &b, &c, &d);
2830 cclhs[0] = (float) a;
2831 cclhs[1] = (float) b;
2832 cclhs[2] = (float) c;
2833 cclhs[3] = (float) d;
2841SFRotationMultVec(JSContext *cx, uintN argc, jsval *vp) {
2842 JSObject *obj = JS_THIS_OBJECT(cx,vp);
2843 jsval *argv = JS_ARGV(cx,vp);
2845 JSObject *_multObj, *_retObj, *_proto;
2852 float *rot, *vec, *cclhs;
2853 float c1[3], c2[3], r[3];
2856 #ifdef JSVRMLCLASSESVERBOSE
2857 printf (
"start of SFRotationMultiVec\n");
2860 if (!JS_ConvertArguments(cx, argc, argv,
"o", &_multObj)) {
2861 printf(
"JS_ConvertArguments failed in SFRotationMultVec.\n");
2865 CHECK_CLASS(cx,_multObj,argv,__FUNCTION__,SFVec3fClass)
2867 if ((_proto = JS_GetPrototypeFw(cx, _multObj)) == NULL) {
2868 printf(
"JS_GetPrototype failed in SFRotationMultVec.\n");
2872 if ((_retObj = JS_ConstructObjectFw(cx, &SFVec3fClass, _proto, NULL)) == NULL) {
2873 printf(
"JS_ConstructObject failed in SFRotationMultVec.\n");
2877 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(_retObj));
2883 if ((_rot = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
2884 printf(
"JS_GetPrivate failed for obj in SFRotationMultVec.\n");
2888 if ((_vec = (
AnyNative *)JS_GetPrivateFw(cx, _multObj)) == NULL) {
2889 printf(
"JS_GetPrivate failed for_multObjin SFRotationMultVec.\n");
2892 if ((_retNative = (
AnyNative *)JS_GetPrivateFw(cx, _retObj)) == NULL) {
2893 printf(
"JS_GetPrivate failed for _retObj in SFRotationMultVec.\n");
2896 rot = _rot->v->sfrotation.c;
2897 vec = _vec->v->sfvec3f.c;
2898 cclhs = _retNative->v->sfvec3f.c;
2905 printf(
"JS_GetPrivate failed for obj in SFRotationMultVec.\n");
2911 if ((_vec = (
SFVec3fNative *)JS_GetPrivateFw(cx, _multObj)) == NULL) {
2912 printf(
"JS_GetPrivate failed for_multObjin SFRotationMultVec.\n");
2916 if ((_retNative = (
SFVec3fNative *)JS_GetPrivateFw(cx, _retObj)) == NULL) {
2917 printf(
"JS_GetPrivate failed for _retObj in SFRotationMultVec.\n");
2922 cclhs = _retNative->v.c;
2924 rl = veclength3f(rot);
2926 s = (float) sin(angle);
2927 c = (float) cos(angle);
2928 veccross3f(c1,rot,vec);
2929 rl = veclength3f(c1);
2930 vecscale3f(c1,c1,1.0f/rl);
2931 veccross3f(c2,rot,c1);
2932 rl = veclength3f(c2);
2933 vecscale3f(c2,c2,1.0f/rl);
2935 cclhs[i] = (
float) (vec[i] + s * c1[i] + (1.0-c) * c2[i]);
2942SFRotationSetAxis(JSContext *cx, uintN argc, jsval *vp) {
2943 JSObject *obj = JS_THIS_OBJECT(cx,vp);
2944 jsval *argv = JS_ARGV(cx,vp);
2946 JSObject *_setAxisObj;
2949 #ifdef JSVRMLCLASSESVERBOSE
2950 printf (
"start of SFRotationSetAxis\n");
2953 if (!JS_ConvertArguments(cx, argc, argv,
"o", &_setAxisObj)) {
2954 printf(
"JS_ConvertArguments failed in SFRotationSetAxis.\n");
2958 CHECK_CLASS(cx,_setAxisObj,argv,__FUNCTION__,SFVec3fClass)
2960 if(SM_method() == 2){
2963 if ((_rot = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
2964 printf(
"JS_GetPrivate failed for obj in SFRotationSetAxis.\n");
2968 if ((_vec = (
AnyNative *)JS_GetPrivateFw(cx, _setAxisObj)) == NULL) {
2969 printf(
"JS_GetPrivate failed for _retObj in SFRotationSetAxis.\n");
2972 rot = _rot->v->sfrotation.c;
2973 vec = _vec->v->sfvec3f.c;
2978 printf(
"JS_GetPrivate failed for obj in SFRotationSetAxis.\n");
2982 if ((_vec = (
SFVec3fNative *)JS_GetPrivateFw(cx, _setAxisObj)) == NULL) {
2983 printf(
"JS_GetPrivate failed for _retObj in SFRotationSetAxis.\n");
2991 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
2994 #ifdef JSVRMLCLASSESVERBOSE
2995 printf(
"SFRotationSetAxis: obj = %p, result = [%.9g, %.9g, %.9g, %.9g]\n",
3007SFRotationSlerp(JSContext *cx, uintN argc, jsval *vp) {
3008 JSObject *obj = JS_THIS_OBJECT(cx,vp);
3009 jsval *argv = JS_ARGV(cx,vp);
3011 jsval *rval = &rvalinst;
3013 JSObject *_destObj, *_retObj, *_proto;
3016 float *rot, *dest, *ret;
3018 #ifdef JSVRMLCLASSESVERBOSE
3019 printf (
"start of SFRotationSlerp\n");
3021 if (!JS_ConvertArguments(cx, argc, argv,
"o d", &_destObj, &t)) {
3022 printf(
"JS_ConvertArguments failed in SFRotationSlerp.\n");
3026 CHECK_CLASS(cx,_destObj,argv,__FUNCTION__,SFRotationClass)
3037 *rval = OBJECT_TO_JSVAL(obj);
3038 }
else if (APPROX(t, 1)) {
3039 *rval = OBJECT_TO_JSVAL(_destObj);
3041 if ((_proto = JS_GetPrototypeFw(cx, _destObj)) == NULL) {
3042 printf(
"JS_GetPrototype failed in SFRotationSlerp.\n");
3046 if ((_retObj = JS_ConstructObjectFw(cx, &SFRotationClass, _proto, NULL)) == NULL) {
3047 printf(
"JS_ConstructObject failed in SFRotationSlerp.\n");
3051 *rval = OBJECT_TO_JSVAL(_retObj);
3053 if(SM_method() == 2){
3055 if ((_rot = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
3056 printf(
"JS_GetPrivate failed for obj in SFRotationSlerp.\n");
3060 if ((_dest = (
AnyNative *)JS_GetPrivateFw(cx, _destObj)) == NULL) {
3061 printf(
"JS_GetPrivate failed for _destObj in SFRotationSlerp.\n");
3065 if ((_ret = (
AnyNative *)JS_GetPrivateFw(cx, _retObj)) == NULL) {
3066 printf(
"JS_GetPrivate failed for _retObj in SFRotationSlerp.\n");
3069 rot = _rot->v->sfrotation.c;
3070 dest = _dest->v->sfrotation.c;
3071 ret = _ret->v->sfrotation.c;
3075 printf(
"JS_GetPrivate failed for obj in SFRotationSlerp.\n");
3080 printf(
"JS_GetPrivate failed for _destObj in SFRotationSlerp.\n");
3085 printf(
"JS_GetPrivate failed for _retObj in SFRotationSlerp.\n");
3092 vrmlrot_to_quaternion(&_quat,
3098 vrmlrot_to_quaternion(&_quat_dest,
3104 quaternion_slerp(&_quat_ret, &_quat, &_quat_dest, t);
3105 quaternion_to_vrmlrot4f(&_quat_ret,ret);
3109 JS_SET_RVAL(cx,vp,*rval);
3116SFRotationToString(JSContext *cx, uintN argc, jsval *vp) {
3117 JSObject *obj = JS_THIS_OBJECT(cx,vp);
3118 jsval *argv = JS_ARGV(cx,vp);
3125 #ifdef JSVRMLCLASSESVERBOSE
3126 printf (
"start of SFRotationToString\n");
3131 if(SM_method() == 2){
3133 if ((ptr = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
3134 printf(
"JS_GetPrivate failed in SFRotationToString.\n");
3137 cc = ptr->v->sfrotation.c;
3141 printf(
"JS_GetPrivate failed in SFRotationToString.\n");
3146 memset(buff, 0, STRING);
3147 sprintf(buff,
"%.9g %.9g %.9g %.9g",
3148 cc[0], cc[1], cc[2], cc[3]);
3149 _str = JS_NewStringCopyZ(cx, buff);
3151 JS_SET_RVAL(cx,vp,STRING_TO_JSVAL(_str));
3154 REMOVE_ROOT (cx,ptr)
3155 REMOVE_ROOT (cx,_str)
3160SFRotationAssign(JSContext *cx, uintN argc, jsval *vp) {
3161 JSObject *obj = JS_THIS_OBJECT(cx,vp);
3162 jsval *argv = JS_ARGV(cx,vp);
3163 JSString *_id_jsstr;
3165 JSObject *_from_obj;
3171 #ifdef JSVRMLCLASSESVERBOSE
3172 printf (
"start of SFRotationAssign\n");
3174 if(SM_method() == 2){
3176 if ((lhs = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
3177 printf(
"JS_GetPrivate failed for obj in SFRotationfAssign.\n");
3180 if (!(*vp).isObject())
3182 if ((rhs = (
AnyNative *)JS_GetPrivateFw(cx, JSVAL_TO_OBJECT(*vp))) == NULL) {
3183 printf(
"JS_ConvertArguments failed in SFRotationAssign. \n");
3186 if(lhs->type != rhs->type)
return JS_FALSE;
3187 AnyNativeAssign(lhs,rhs);
3188 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
3195 printf(
"JS_GetPrivate failed for obj in SFRotationAssign.\n");
3199 CHECK_CLASS(cx,obj,argv,__FUNCTION__,SFRotationClass)
3201 if (JS_ConvertArguments(cx, argc, argv,
"oS", &_from_obj, &_id_jsstr) == JS_TRUE) {
3202 _id_str = JS_EncodeString(cx,_id_jsstr);
3205 printf(
"JS_ConvertArguments failed in SFRotationAssign.\n");
3210 if (_from_obj == NULL) {
3211 printf (
"we have an assignment to null in SFRotationAssign\n");
3212 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(NULL));
3217 CHECK_CLASS(cx,_from_obj,argv,__FUNCTION__,SFRotationClass)
3220 printf(
"JS_GetPrivate failed for _from_obj in SFRotationAssign.\n");
3223 #ifdef JSVRMLCLASSESVERBOSE
3224 printf(
"SFRotationAssign: obj = %p, id = \"%s\", from = %p\n",
3225 obj, _id_str, _from_obj);
3228 SFRotationNativeAssign(ptr, fptr);
3229 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
3233 #ifdef JSVRMLCLASSESVERBOSE
3234 printf(
"SFRotationAssign: returning object as jsval\n");
3240SFRotationConstr(JSContext *cx, uintN argc, jsval *vp) {
3241 JSObject *obj = JS_NewObject(cx,&SFRotationClass,NULL,NULL);
3242 jsval *argv = JS_ARGV(cx,vp);
3245 JSObject *_ob1, *_ob2;
3252 float *cc, *vec, *
vec2;
3254 #ifdef JSVRMLCLASSESVERBOSE
3255 printf (
"start of SFRotationConstr\n");
3259 if(SM_method() == 2){
3261 if((any = (
AnyNative*)AnyNativeNew(FIELDTYPE_SFRotation,NULL,NULL)) == NULL){
3262 printf(
"AnyfNativeNew failed in SFRotationConstr.\n");
3265 if (!JS_SetPrivateFw(cx, obj, any)) {
3266 printf(
"JS_SetPrivate failed in SFRotationConstr.\n");
3269 cc = any->v->sfrotation.c;
3274 printf(
"SFRotationNativeNew failed in SFRotationConstr.\n");
3283 if (!JS_SetPrivateFw(cx, obj, ptr)) {
3284 printf(
"JS_SetPrivate failed in SFRotationConstr.\n");
3287 ptr->valueChanged = 1;
3292 cc[0] = 0.0f; cc[1] = 0.0f; cc[2] = 1.0f; cc[3] = 0.0f;
3294 }
else if (argc == 2) {
3296 if (argv[0].isObject()) {
3298 _ob1 = JSVAL_TO_OBJECT(argv[0]);
3301 CHECK_CLASS(cx,_ob1,argv,__FUNCTION__,SFVec3fClass)
3304 if ((_vec = (
AnyNative *)JS_GetPrivateFw(cx, _ob1)) == NULL) {
3305 printf(
"JS_GetPrivate failed for arg format \"o d\" in SFRotationConstr.\n");
3308 vec = _vec->v->sfvec3f.c;
3311 if ((_vec = (
SFVec3fNative *)JS_GetPrivateFw(cx, _ob1)) == NULL) {
3312 printf(
"JS_GetPrivate failed for arg format \"o d\" in SFRotationConstr.\n");
3319 if (argv[1].isObject()) {
3321 _ob2 = JSVAL_TO_OBJECT(argv[1]);
3325 CHECK_CLASS(cx,_ob2,argv,__FUNCTION__,SFVec3fClass)
3328 if ((_vec2 = (
AnyNative *)JS_GetPrivateFw(cx, _ob2)) == NULL) {
3329 printf(
"JS_GetPrivate failed for _ob1 in SFRotationConstr.\n");
3332 vec2 = _vec2->v->sfvec3f.c;
3335 if ((_vec2 = (
SFVec3fNative *)JS_GetPrivateFw(cx, _ob2)) == NULL) {
3336 printf(
"JS_GetPrivate failed for _ob1 in SFRotationConstr.\n");
3343 if (!JSVAL_IS_NUMBER(argv[1])) {
3344 printf (
"SFRotationConstr param error - number expected\n");
3347 if (!JS_ValueToNumber(cx, argv[1], &doub)) {
3348 printf(
"JS_ValueToNumber failed in SFRotationConstr.\n");
3358 cc[3] = (float) doub;
3360 v1len = veclength3f(vec);
3361 v2len = veclength3f(
vec2);
3362 v12dp = vecdot3f(vec,
vec2);
3363 veccross3f(cc,vec,
vec2);
3367 v12dp /= v1len * v2len;
3368 cc[3] = (float) atan2(sqrt(1 - v12dp * v12dp), v12dp);
3370 }
else if (argc == 4 && JS_ConvertArguments(cx, argc, argv,
"d d d d",
3371 &(pars[0]), &(pars[1]), &(pars[2]), &(pars[3]))) {
3372 cc[0] = (float) pars[0];
3373 cc[1] = (float) pars[1];
3374 cc[2] = (float) pars[2];
3375 cc[3] = (float) pars[3];
3377 printf(
"Invalid arguments for SFRotationConstr.\n");
3381 #ifdef JSVRMLCLASSESVERBOSE
3382 printf(
"SFRotationConstr: obj = %p, %u args, %f %f %f %f\n",
3384 cc[0], cc[1], cc[2], cc[3]);
3388 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
3395SFRotationGetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp){
3396 JSObject *obj = *hobj.address();
3397 jsid iid = *hiid.address();
3398 jsval *vp = hvp.address();
3404 if (!JS_IdToValue(cx,iid,&
id)) {
3405 printf(
"JS_IdToValue failed in SFRotationGetProperty.\n");
3410 #ifdef JSVRMLCLASSESVERBOSE
3411 printf (
"start of SFRotationGetProperty\n");
3413 if(SM_method()== 2){
3415 if ((ptr = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
3416 printf(
"JS_GetPrivate failed in SFRotationGetProperty.\n");
3419 cc = ptr->v->sfrotation.c;
3423 printf(
"JS_GetPrivate failed in SFRotationGetProperty.\n");
3428 if (JSVAL_IS_INT(
id)) {
3429 switch (JSVAL_TO_INT(
id)) {
3432 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
3434 "JS_NewDouble failed for %f in SFRotationGetProperty.\n",
3441 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
3443 "JS_NewDouble failed for %f in SFRotationGetProperty.\n",
3450 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
3452 "JS_NewDouble failed for %f in SFRotationGetProperty.\n",
3459 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
3461 "JS_NewDouble failed for %f in SFRotationGetProperty.\n",
3472SFRotationSetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp){
3473 JSObject *obj = *hobj.address();
3474 jsid iid = *hiid.address();
3475 jsval *vp = hvp.address();
3482 if (!JS_IdToValue(cx,iid,&
id)) {
3483 printf(
"JS_IdToValue failed in SFRotationSetProperty.\n");
3488 #ifdef JSVRMLCLASSESVERBOSE
3489 printf (
"start of SFRotationSetProperty\n");
3491 if(SM_method() == 2){
3493 if ((any = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
3494 printf(
"JS_GetPrivate failed in SFRotationProperty.\n");
3497 if(any->valueChanged)
3498 (*any->valueChanged)++;
3499 cc = any->v->sfrotation.c;
3504 printf(
"JS_GetPrivate failed in SFRotationSetProperty.\n");
3507 ptr->valueChanged++;
3508 #ifdef JSVRMLCLASSESVERBOSE
3509 printf(
"SFRotationSetProperty: obj = %p, id = %d, valueChanged = %d\n",
3510 obj, JSVAL_TO_INT(
id), ptr->valueChanged);
3514 if (!JS_ConvertValue(cx, *vp, JSTYPE_NUMBER, &myv)) {
3515 printf(
"JS_ConvertValue failed in SFRotationSetProperty.\n");
3519 if (JSVAL_IS_INT(
id)) {
3520 switch (JSVAL_TO_INT(
id)) {
3522 cc[0] = (float) JSVAL_TO_DOUBLE(myv);
3525 cc[1] = (float) JSVAL_TO_DOUBLE(myv);
3528 cc[2] = (float) JSVAL_TO_DOUBLE(myv);
3531 cc[3] = (float) JSVAL_TO_DOUBLE(myv);
3547#define __2FNORMALIZE 8
3548JSBool SFVec2fGeneric( JSContext *cx, JSObject *obj,
3549 uintN argc, jsval *argv, jsval *rval,
int op) {
3551 JSObject *_paramObj, *_proto, *_retObj;
3556 float *cc, *cc2, cc3[2], cclhs[2];
3560 int SFParam = FALSE;
3561 int numParam = FALSE;
3564 int retSFVec2f = FALSE;
3565 int retNumeric = FALSE;
3574 if ((op==__2FADD)||(op==__2FDOT)||(op==__2FSUBT))SFParam=TRUE;
3575 if ((op==__2FDIVIDE)||(op==__2FMULT))numParam=TRUE;
3578 if ((op==__2FDOT)||(op==__2FLENGTH)) retNumeric = TRUE;
3579 retSFVec2f = (!retNumeric);
3583 param_isString = JSVAL_IS_STRING (*argv);
3586 if ((SFParam) || (numParam)) {
3588 if (!JSVAL_IS_NUMBER(argv[0])) {
3589 printf (
"SFVec2f param error - number expected\n");
3592 if (!JS_ValueToNumber(cx, argv[0], &d)) {
3593 printf(
"JS_ValueToNumber failed in SFVec2f.\n");
3599 if (param_isString) {
3600 _str = JS_ValueToString(cx, *argv);
3601 charString = JS_EncodeString(cx,_str);
3603 if (sscanf(charString,
"%lf %lf",
3604 &(pars[0]), &(pars[1])) != 2) {
3605 printf (
"conversion problem in SFVec2fGeneric\n");
3614 if (argv[0].isObject()) {
3616 if ((_vec2 = (
AnyNative *)JS_GetPrivateFw(cx, JSVAL_TO_OBJECT(argv[0]))) == NULL) {
3617 printf(
"in SFVec2f, RHS was NOT native type \n");
3621 cc2 = _vec2->v->sfvec2f.c;
3629 if (!JS_ConvertArguments(cx, argc, argv,
"o", &_paramObj)) {
3630 printf(
"JS_ConvertArguments failed in SFVec2f.\n");
3634 CHECK_CLASS(cx,_paramObj,argv,__FUNCTION__,SFVec2fClass)
3636 if ((_vec2 = (
SFVec2fNative*)JS_GetPrivateFw(cx, _paramObj)) == NULL) {
3637 printf(
"JS_GetPrivate failed for _paramObj in SFVec2f.\n");
3647 if(SM_method() == 2){
3649 if ((_vec1 = (
AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
3650 printf(
"JS_GetPrivate failed for obj in SFVec3fAdd.\n");
3653 cc = _vec1->v->sfvec2f.c;
3656 if ((_vec1 = (
SFVec2fNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
3657 printf(
"JS_GetPrivate failed for obj in SFVec2fAdd.\n");
3666 vecadd2f(cclhs,cc,cc2);
3669 vecscale2f(cclhs,cc,1.0/d);
3672 vecscale2f(cclhs,cc,d);
3675 vecdif2f(cclhs,cc,cc2);
3678 d = vecdot2f(cc,cc2);
3681 d = veclength2f(cc);
3684 vecnormal2f(cclhs,cc);
3692 if ((_proto = JS_GetPrototypeFw(cx, obj)) == NULL) {
3693 printf(
"JS_GetPrototype failed in SFVec2f.\n");
3697 JS_ConstructObjectFw(cx, &SFVec2fClass, _proto, NULL)) == NULL) {
3698 printf(
"JS_ConstructObject failed in SFVec2f.\n");
3701 *rval = OBJECT_TO_JSVAL(_retObj);
3702 if(SM_method() == 2){
3704 if ((any = (
AnyNative*)JS_GetPrivateFw(cx, _retObj)) == NULL) {
3705 printf(
"JS_GetPrivate failed for _retObj in SFVec3f.\n");
3708 memcpy(any->v->sfvec2f.c,cclhs,2*
sizeof(
float));
3711 if ((_retNative = (
SFVec3fNative*)JS_GetPrivateFw(cx, _retObj)) == NULL) {
3712 printf(
"JS_GetPrivate failed for _retObj in SFVec3f.\n");
3715 memcpy(_retNative->v.c,cclhs,2*
sizeof(
float));
3718 }
else if (retNumeric) {
3719 if (JS_NewNumberValue(cx,d,rval) == JS_FALSE) {
3720 printf(
"JS_NewDouble failed for %f in SFVec2f.\n",d);
3725 #ifdef JSVRMLCLASSESVERBOSE
3727 printf(
"SFVec2fgeneric: obj = %p, result = [%.9g, %.9g]\n",
3729 (_retNative->v).c[0], (_retNative->v).c[1]);
3732 printf(
"SFVec2fgeneric: obj = %p, result = %.9g\n",
3741SFVec2fAdd(JSContext *cx, uintN argc, jsval *vp) {
3742 JSObject *obj = JS_THIS_OBJECT(cx,vp);
3743 jsval *argv = JS_ARGV(cx,vp);
3745 JSBool retval = SFVec2fGeneric(cx, obj, argc, argv, &rval, __2FADD);
3746 JS_SET_RVAL(cx,vp,rval);
3752SFVec2fDivide(JSContext *cx, uintN argc, jsval *vp) {
3753 JSObject *obj = JS_THIS_OBJECT(cx,vp);
3754 jsval *argv = JS_ARGV(cx,vp);
3756 JSBool retval = SFVec2fGeneric(cx, obj, argc, argv, &rval, __2FDIVIDE);
3757 JS_SET_RVAL(cx,vp,rval);
3762SFVec2fMultiply(JSContext *cx, uintN argc, jsval *vp) {
3763 JSObject *obj = JS_THIS_OBJECT(cx,vp);
3764 jsval *argv = JS_ARGV(cx,vp);
3766 JSBool retval = SFVec2fGeneric(cx, obj, argc, argv, &rval, __2FMULT);
3767 JS_SET_RVAL(cx,vp,rval);
3773SFVec2fSubtract(JSContext *cx, uintN argc, jsval *vp) {
3774 JSObject *obj = JS_THIS_OBJECT(cx,vp);
3775 jsval *argv = JS_ARGV(cx,vp);
3777 JSBool retval = SFVec2fGeneric(cx, obj, argc, argv, &rval, __2FSUBT);
3778 JS_SET_RVAL(cx,vp,rval);
3784SFVec2fDot(JSContext *cx, uintN argc, jsval *vp) {
3785 JSObject *obj = JS_THIS_OBJECT(cx,vp);
3786 jsval *argv = JS_ARGV(cx,vp);
3788 JSBool retval = SFVec2fGeneric(cx, obj, argc, argv, &rval, __2FDOT);
3789 JS_SET_RVAL(cx,vp,rval);
3794SFVec2fLength(JSContext *cx, uintN argc, jsval *vp) {
3795 JSObject *obj = JS_THIS_OBJECT(cx,vp);
3796 jsval *argv = JS_ARGV(cx,vp);
3798 JSBool retval = SFVec2fGeneric(cx, obj, argc, argv, &rval, __2FLENGTH);
3799 JS_SET_RVAL(cx,vp,rval);
3805SFVec2fNormalize(JSContext *cx, uintN argc, jsval *vp) {
3806 JSObject *obj = JS_THIS_OBJECT(cx,vp);
3807 jsval *argv = JS_ARGV(cx,vp);
3809 JSBool retval = SFVec2fGeneric(cx, obj, argc, argv, &rval, __2FNORMALIZE);
3810 JS_SET_RVAL(cx,vp,rval);
3815SFVec2fToString(JSContext *cx, uintN argc, jsval *vp) {
3816 JSObject *obj = JS_THIS_OBJECT(cx,vp);
3817 jsval *argv = JS_ARGV(cx,vp);
3826 if ((ptr = (
AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
3827 printf(
"JS_GetPrivate failed in SFVec2fToString.\n");
3830 cc = ptr->v->sfvec2f.c;
3833 if ((ptr = (
SFVec2fNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
3834 printf(
"JS_GetPrivate failed in SFVec2fToString.\n");
3839 memset(buff, 0, STRING);
3840 sprintf(buff,
"%.9g %.9g",
3842 _str = JS_NewStringCopyZ(cx, buff);
3843 JS_SET_RVAL(cx,vp,STRING_TO_JSVAL(_str));
3849SFVec2fAssign(JSContext *cx, uintN argc, jsval *vp) {
3850 JSObject *obj = JS_THIS_OBJECT(cx,vp);
3851 jsval *argv = JS_ARGV(cx,vp);
3852 JSString *_id_jsstr;
3854 JSObject *_from_obj;
3859 if(SM_method() == 2){
3861 if ((lhs = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
3862 printf(
"JS_GetPrivate failed for obj in SFVec3dAssign.\n");
3865 if (!(*vp).isObject())
3867 if ((rhs = (
AnyNative *)JS_GetPrivateFw(cx, JSVAL_TO_OBJECT(*vp))) == NULL) {
3868 printf(
"JS_ConvertArguments failed in SFVec2fAssign. \n");
3871 AnyNativeAssign(lhs,rhs);
3875 if ((ptr = (
SFVec2fNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
3876 printf(
"JS_GetPrivate failed for obj in SFVec2fAssign.\n");
3880 CHECK_CLASS(cx,obj,argv,__FUNCTION__,SFVec2fClass)
3882 if (JS_ConvertArguments(cx, argc, argv,
"oS", &_from_obj, &_id_jsstr) == JS_TRUE) {
3883 _id_str = JS_EncodeString(cx,_id_jsstr);
3886 printf(
"JS_ConvertArguments failed in SFVec2fAssign.\n");
3890 CHECK_CLASS(cx,_from_obj,argv,__FUNCTION__,SFVec2fClass)
3892 if ((fptr = (
SFVec2fNative *)JS_GetPrivateFw(cx, _from_obj)) == NULL) {
3893 printf(
"JS_GetPrivate failed for _from_obj in SFVec2fAssign.\n");
3896 #ifdef JSVRMLCLASSESVERBOSE
3897 printf(
"SFVec2fAssign: obj = %p, id = \"%s\", from = %p\n",
3898 obj, _id_str, _from_obj);
3901 SFVec2fNativeAssign(ptr, fptr);
3903 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
3910SFVec2fConstr(JSContext *cx, uintN argc, jsval *vp) {
3911 JSObject *obj = JS_NewObject(cx,&SFVec2fClass,NULL,NULL);
3912 jsval *argv = JS_ARGV(cx,vp);
3919 if(SM_method() == 2){
3921 if((any = (
AnyNative*)AnyNativeNew(FIELDTYPE_SFVec2f,NULL,NULL)) == NULL){
3922 printf(
"AnyfNativeNew failed in SFVec3fConstr.\n");
3925 if (!JS_SetPrivateFw(cx, obj, any)) {
3926 printf(
"JS_SetPrivate failed in SFVec2fConstr.\n");
3930 cc = any->v->sfvec2f.c;
3935 printf(
"SFVec2fNativeNew failed in SFVec2fConstr.\n");
3943 if (!JS_SetPrivateFw(cx, obj, ptr)) {
3944 printf(
"JS_SetPrivate failed in SFVec2fConstr.\n");
3948 ptr->valueChanged = 1;
3952 cc[0] = (float) 0.0;
3953 cc[1] = (float) 0.0;
3955 if (!JS_ConvertArguments(cx, argc, argv,
"d d", &(pars[0]), &(pars[1]))) {
3956 printf(
"JS_ConvertArguments failed in SFVec2fConstr.\n");
3959 cc[0] = (float) pars[0];
3960 cc[1] = (float) pars[1];
3962 #ifdef JSVRMLCLASSESVERBOSE
3963 printf(
"SFVec2fConstr: obj = %p, %u args, %f %f\n",
3965 (ptr->v).c[0], (ptr->v).c[1]);
3969 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
3976SFVec2fGetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp){
3977 JSObject *obj = *hobj.address();
3978 jsid iid = *hiid.address();
3979 jsval *vp = hvp.address();
3985 if (!JS_IdToValue(cx,iid,&
id)) {
3986 printf(
"JS_IdToValue failed in SFVec2fGetProperty.\n");
3993 if ((any = (
AnyNative *)JS_GetPrivateFw(cx,obj)) == NULL) {
3994 printf(
"JS_GetPrivate failed in SFVec2fGetProperty.\n");
3997 cc = any->v->sfvec2f.c;
4001 if ((ptr = (
SFVec2fNative *)JS_GetPrivateFw(cx,obj)) == NULL) {
4002 printf(
"JS_GetPrivate failed in SFVec2fGetProperty.\n");
4007 if (JSVAL_IS_INT(
id)) {
4008 switch (JSVAL_TO_INT(
id)) {
4011 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
4013 "JS_NewDouble failed for %f in SFVec2fGetProperty.\n",
4020 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
4022 "JS_NewDouble failed for %f in SFVec2fGetProperty.\n",
4033SFVec2fSetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp){
4034 JSObject *obj = *hobj.address();
4035 jsid iid = *hiid.address();
4036 jsval *vp = hvp.address();
4043 if (!JS_IdToValue(cx,iid,&
id)) {
4044 printf(
"JS_IdToValue failed in SFVec2fSetProperty.\n");
4049 if(SM_method() == 2){
4051 if ((any = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
4052 printf(
"JS_GetPrivate failed in SFVec2fSetProperty.\n");
4055 if(any->valueChanged)
4056 (*any->valueChanged)++;
4057 cc = any->v->sfvec2f.c;
4061 if ((ptr = (
SFVec2fNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
4062 printf(
"JS_GetPrivate failed in SFVec2fSetProperty.\n");
4065 ptr->valueChanged++;
4066 #ifdef JSVRMLCLASSESVERBOSE
4067 printf(
"SFVec2fSetProperty: obj = %p, id = %d, valueChanged = %d\n",
4068 obj, JSVAL_TO_INT(
id), ptr->valueChanged);
4072 if (!JS_ConvertValue(cx, *vp, JSTYPE_NUMBER, &myv)) {
4073 printf(
"JS_ConvertValue failed in SFVec2fSetProperty.\n");
4077 if (JSVAL_IS_INT(
id)) {
4078 switch (JSVAL_TO_INT(
id)) {
4080 cc[0] = (float) JSVAL_TO_DOUBLE(myv);
4083 cc[1] = (float) JSVAL_TO_DOUBLE(myv);
4101#define __3FNORMALIZE 8
4105JSBool SFVec3fGeneric( JSContext *cx, JSObject *obj,
4106 uintN argc, jsval *argv, jsval *rval,
int op) {
4107 JSObject *_paramObj, *_proto, *_retObj;
4114 float *cc, *cc2, cc3[3], cclhs[3];
4118 int SFParam = FALSE;
4119 int numParam = FALSE;
4122 int retSFVec3f = FALSE;
4123 int retNumeric = FALSE;
4131 #ifdef JSVRMLCLASSESVERBOSE
4132 printf (
"SFVec3fGeneric\n");
4136 if ((op==__3FADD)||(op==__3FDOT)||(op==__3FCROSS)||(op==__3FSUBT))SFParam=TRUE;
4137 if ((op==__3FDIVIDE)||(op==__3FMULT))numParam=TRUE;
4140 if ((op==__3FDOT)||(op==__3FLENGTH)) retNumeric = TRUE;
4141 retSFVec3f = (!retNumeric);
4145 param_isString = JSVAL_IS_STRING (*argv);
4148 if ((SFParam) || (numParam)) {
4150 if (!JSVAL_IS_NUMBER(argv[0])) {
4151 printf (
"SFVec3f param error - number expected\n");
4154 if (!JS_ValueToNumber(cx, argv[0], &d)) {
4155 printf(
"JS_ValueToNumber failed in SFVec3f.\n");
4161 if (param_isString) {
4162 _str = JS_ValueToString(cx, *argv);
4163 charString = JS_EncodeString(cx,_str);
4164 if (sscanf(charString,
"%lf %lf %lf",
4165 &(pars[0]), &(pars[1]), &(pars[2])) != 3) {
4166 printf (
"conversion problem in SFVec3fGeneric\n");
4175 if(SM_method() == 2){
4176 if (argv[0].isObject()) {
4178 if ((_vec2 = (
AnyNative *)JS_GetPrivateFw(cx, JSVAL_TO_OBJECT(argv[0]))) == NULL) {
4179 printf(
"in SFVec3d, RHS was NOT native type \n");
4183 cc2 = _vec2->v->sfvec3f.c;
4190 if (!JS_ConvertArguments(cx, argc, argv,
"o", &_paramObj)) {
4191 printf(
"JS_ConvertArguments failed in SFVec3f.\n");
4195 CHECK_CLASS(cx,_paramObj,argv,__FUNCTION__,SFVec3fClass)
4198 if ((_vec2 = (
SFVec3fNative*)JS_GetPrivateFw(cx, _paramObj)) == NULL) {
4199 printf(
"JS_GetPrivate failed for _paramObj in SFVec3f.\n");
4209 if(SM_method() == 2){
4211 if ((_vec1 = (
AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
4212 printf(
"JS_GetPrivate failed for obj in SFVec3fAdd.\n");
4215 cc = _vec1->v->sfvec3f.c;
4218 if ((_vec1 = (
SFVec3fNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
4219 printf(
"JS_GetPrivate failed for obj in SFVec3fAdd.\n");
4225 #ifdef JSVRMLCLASSESVERBOSE
4226 printf (
"SFVec3f generic, vec2 %f %f %f\n",pars[0],pars[1],pars[2]);
4232 vecadd3f(cclhs,cc,cc2);
4235 vecscale3f(cclhs,cc,1.0/d);
4238 vecscale3f(cclhs,cc,d);
4241 vecdif3f(cclhs,cc,cc2);
4244 d = vecdot3f(cc,cc2);
4247 veccross3f(cclhs,cc,cc2);
4250 d = veclength3f(cc);
4253 vecnormalize3f(cclhs,cc);
4256 vecnegate3f(cclhs,cc);
4259 printf (
"woops... %d\n",op);
4263 #ifdef JSVRMLCLASSESVERBOSE
4264 printf (
"past calcs\n");
4269 #ifdef JSVRMLCLASSESVERBOSE
4270 printf (
"returning SFVec3f\n");
4272 if ((_proto = JS_GetPrototypeFw(cx, obj)) == NULL) {
4273 printf(
"JS_GetPrototype failed in SFVec3f.\n");
4277 JS_ConstructObjectFw(cx, &SFVec3fClass, _proto, NULL)) == NULL) {
4278 printf(
"JS_ConstructObject failed in SFVec3f.\n");
4281 *rval = OBJECT_TO_JSVAL(_retObj);
4282 if(SM_method() == 2){
4284 if ((any = (
AnyNative*)JS_GetPrivateFw(cx, _retObj)) == NULL) {
4285 printf(
"JS_GetPrivate failed for _retObj in SFVec3f.\n");
4288 memcpy(any->v->sfvec3f.c,cclhs,3*
sizeof(
float));
4291 if ((_retNative = (
SFVec3fNative*)JS_GetPrivateFw(cx, _retObj)) == NULL) {
4292 printf(
"JS_GetPrivate failed for _retObj in SFVec3f.\n");
4295 memcpy(_retNative->v.c,cclhs,3*
sizeof(
float));
4297 }
else if (retNumeric) {
4298 if (JS_NewNumberValue(cx,d,rval) == JS_FALSE) {
4299 printf(
"JS_NewDouble failed for %f in SFVec3f.\n",d);
4303 #ifdef JSVRMLCLASSESVERBOSE
4305 printf(
"SFVec3fgeneric: obj = %p, result = [%.9g, %.9g, %.9g]\n",
4307 (_retNative->v).c[0], (_retNative->v).c[1],
4308 (_retNative->v).c[2]);
4311 printf(
"SFVec2fgeneric: obj = %p, result = %.9g\n",
4319SFVec3fAdd(JSContext *cx, uintN argc, jsval *vp) {
4320 JSObject *obj = JS_THIS_OBJECT(cx,vp);
4321 jsval *argv = JS_ARGV(cx,vp);
4323 JSBool retval = SFVec3fGeneric(cx, obj, argc, argv, &rval, __3FADD);
4324 JS_SET_RVAL(cx,vp,rval);
4329SFVec3fCross(JSContext *cx, uintN argc, jsval *vp) {
4330 JSObject *obj = JS_THIS_OBJECT(cx,vp);
4331 jsval *argv = JS_ARGV(cx,vp);
4333 JSBool retval = SFVec3fGeneric(cx, obj, argc, argv, &rval, __3FCROSS);
4334 JS_SET_RVAL(cx,vp,rval);
4339SFVec3fDivide(JSContext *cx, uintN argc, jsval *vp) {
4340 JSObject *obj = JS_THIS_OBJECT(cx,vp);
4341 jsval *argv = JS_ARGV(cx,vp);
4343 JSBool retval = SFVec3fGeneric(cx, obj, argc, argv, &rval, __3FDIVIDE);
4344 JS_SET_RVAL(cx,vp,rval);
4349SFVec3fDot(JSContext *cx, uintN argc, jsval *vp) {
4350 JSObject *obj = JS_THIS_OBJECT(cx,vp);
4351 jsval *argv = JS_ARGV(cx,vp);
4353 JSBool retval = SFVec3fGeneric(cx, obj, argc, argv, &rval, __3FDOT);
4354 JS_SET_RVAL(cx,vp,rval);
4359SFVec3fLength(JSContext *cx, uintN argc, jsval *vp) {
4360 JSObject *obj = JS_THIS_OBJECT(cx,vp);
4361 jsval *argv = JS_ARGV(cx,vp);
4363 JSBool retval = SFVec3fGeneric(cx, obj, argc, argv, &rval, __3FLENGTH);
4364 JS_SET_RVAL(cx,vp,rval);
4370SFVec3fMultiply(JSContext *cx, uintN argc, jsval *vp) {
4371 JSObject *obj = JS_THIS_OBJECT(cx,vp);
4372 jsval *argv = JS_ARGV(cx,vp);
4374 JSBool retval = SFVec3fGeneric(cx, obj, argc, argv, &rval, __3FMULT);
4375 JS_SET_RVAL(cx,vp,rval);
4381SFVec3fNegate(JSContext *cx, uintN argc, jsval *vp) {
4382 JSObject *obj = JS_THIS_OBJECT(cx,vp);
4383 jsval *argv = JS_ARGV(cx,vp);
4385 JSBool retval = SFVec3fGeneric(cx, obj, argc, argv, &rval, __3FNEGATE);
4386 JS_SET_RVAL(cx,vp,rval);
4391SFVec3fNormalize(JSContext *cx, uintN argc, jsval *vp) {
4392 JSObject *obj = JS_THIS_OBJECT(cx,vp);
4393 jsval *argv = JS_ARGV(cx,vp);
4395 JSBool retval = SFVec3fGeneric(cx, obj, argc, argv, &rval, __3FNORMALIZE);
4396 JS_SET_RVAL(cx,vp,rval);
4401SFVec3fSubtract(JSContext *cx, uintN argc, jsval *vp) {
4402 JSObject *obj = JS_THIS_OBJECT(cx,vp);
4403 jsval *argv = JS_ARGV(cx,vp);
4405 JSBool retval = SFVec3fGeneric(cx, obj, argc, argv, &rval, __3FSUBT);
4406 JS_SET_RVAL(cx,vp,rval);
4411SFVec3fToString(JSContext *cx, uintN argc, jsval *vp) {
4412 JSObject *obj = JS_THIS_OBJECT(cx,vp);
4413 jsval *argv = JS_ARGV(cx,vp);
4423 if ((ptr = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
4424 printf(
"JS_GetPrivate failed in SFVec3fToString.\n");
4427 cc = ptr->v->sfvec3f.c;
4430 if ((ptr = (
SFVec3fNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
4431 printf(
"JS_GetPrivate failed in SFVec3fToString.\n");
4436 memset(buff, 0, STRING);
4437 sprintf(buff,
"%.9g %.9g %.9g",
4438 cc[0], cc[1], cc[2]);
4439 _str = JS_NewStringCopyZ(cx, buff);
4441 JS_SET_RVAL(cx,vp,STRING_TO_JSVAL(_str));
4443 #ifdef JSVRMLCLASSESVERBOSE
4444 printf (
"SFVec3fToString, string is :%s:\n",buff);
4452SFVec3fAssign(JSContext *cx, uintN argc, jsval *vp) {
4453 JSObject *obj = JS_THIS_OBJECT(cx,vp);
4454 jsval *argv = JS_ARGV(cx,vp);
4455 JSString *_id_jsstr;
4456 JSObject *_from_obj;
4462 #ifdef JSVRMLCLASSESVERBOSE
4463 printf (
"start of SFVec3fAssign\n");
4466 if(SM_method() == 2){
4468 if ((lhs = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
4469 printf(
"JS_GetPrivate failed for obj in SFVec3dAssign.\n");
4472 if (!(*vp).isObject())
4474 if ((rhs = (
AnyNative *)JS_GetPrivateFw(cx, JSVAL_TO_OBJECT(*vp))) == NULL) {
4475 printf(
"JS_ConvertArguments failed in SFVec3fAssign. \n");
4478 AnyNativeAssign(lhs,rhs);
4481 if ((ptr = (
SFVec3fNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
4482 printf(
"JS_GetPrivate failed for obj in SFVec3fAssign.\n");
4486 CHECK_CLASS(cx,obj,argv,__FUNCTION__,SFVec3fClass)
4488 if (JS_ConvertArguments(cx, argc, argv,
"oS", &_from_obj, &_id_jsstr)) {
4489 _id_str = JS_EncodeString(cx,_id_jsstr);
4491 printf(
"JS_ConvertArguments failed in SFVec3fAssign.\n");
4495 CHECK_CLASS(cx,_from_obj,argv,__FUNCTION__,SFVec3fClass)
4497 if ((fptr = (
SFVec3fNative *)JS_GetPrivateFw(cx, _from_obj)) == NULL) {
4498 printf(
"JS_GetPrivate failed for _from_obj in SFVec3fAssign.\n");
4501 #ifdef JSVRMLCLASSESVERBOSE
4502 printf(
"SFVec3fAssign: obj = %p, id = \"%s\", from = %p\n",
4503 obj, _id_str, _from_obj);
4506 SFVec3fNativeAssign(ptr, fptr);
4508 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
4510 #ifdef JSVRMLCLASSESVERBOSE
4511 printf (
"end of SFVec3fAssign\n");
4518SFVec3fConstr(JSContext *cx, uintN argc, jsval *vp) {
4519 JSObject *obj = JS_NewObject(cx,&SFVec3fClass,NULL,NULL);
4520 jsval *argv = JS_ARGV(cx,vp);
4524 #ifdef JSVRMLCLASSESVERBOSE
4525 printf (
"start of SFVec3fConstr\n");
4529 if(SM_method() == 2){
4531 if((any = (
AnyNative*)AnyNativeNew(FIELDTYPE_SFVec3f,NULL,NULL)) == NULL){
4532 printf(
"AnyfNativeNew failed in SFVec3fConstr.\n");
4535 if (!JS_SetPrivateFw(cx, obj, any)) {
4536 printf(
"JS_SetPrivate failed in SFVec3fConstr.\n");
4539 cc = any->v->sfvec3f.c;
4543 printf(
"SFVec3fNativeNew failed in SFVec3fConstr.\n");
4551 if (!JS_SetPrivateFw(cx, obj, ptr)) {
4552 printf(
"JS_SetPrivate failed in SFVec3fConstr.\n");
4555 ptr->valueChanged = 1;
4562 }
else if(argc == 1){
4563 if(SM_method() == 2){
4565 if (argv[0].isObject()) {
4567 if ((rhs = (
AnyNative *)JS_GetPrivateFw(cx, JSVAL_TO_OBJECT(argv[0]))) != NULL) {
4569 int rhstype = rhs->type;
4572 case FIELDTYPE_SFVec3f:
4573 veccopy3f(cc,anyv->sfvec3f.c);
break;
4574 case FIELDTYPE_SFVec3d:
4575 double2float(cc,anyv->sfvec3d.c,3);
break;
4576 case FIELDTYPE_SFRotation:
4577 veccopy3f(cc,anyv->sfrotation.c);
break;
4579 vecset3f(cc,0.0f,0.0f,0.0f);
4580 ConsoleMessage(
"new SFVec3f( obj ) doesn't handle obj type %d\n",rhstype);
4589 if (!JS_ConvertArguments(cx, argc, argv,
"d d d",
4590 &(pars[0]), &(pars[1]), &(pars[2]))) {
4591 printf(
"JS_ConvertArguments failed in SFVec3fConstr.\n");
4594 cc[0] = (float) pars[0];
4595 cc[1] = (float) pars[1];
4596 cc[2] = (float) pars[2];
4598 #ifdef JSVRMLCLASSESVERBOSE
4599 printf(
"SFVec3fConstr: obj = %p, %u args, %f %f %f\n",
4601 cc[0], cc[1], cc[2]);
4605 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
4610SFVec3fGetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp){
4611 JSObject *obj = *hobj.address();
4612 jsid iid = *hiid.address();
4613 jsval *vp = hvp.address();
4617 #ifdef JSVRMLCLASSESVERBOSE
4623 if (!JS_IdToValue(cx,iid,&
id)) {
4624 printf(
"JS_IdToValue failed in SFVec3fGetProperty.\n");
4628 #ifdef JSVRMLCLASSESVERBOSE
4636 _idStr = JS_ValueToString(cx, *vp);
4638 _id_c = JS_GetStringBytes(_idStr);
4640 _id_c = JS_EncodeString(cx,_idStr);
4645 if ((any = (
AnyNative *)JS_GetPrivateFw(cx,obj)) == NULL) {
4646 printf(
"JS_GetPrivate failed in SFVec3fGetProperty.\n");
4649 cc = any->v->sfvec3f.c;
4652 if ((ptr = (
SFVec3fNative *)JS_GetPrivateFw(cx,obj)) == NULL) {
4653 printf(
"JS_GetPrivate failed in SFVec3fGetProperty.\n");
4658 if (JSVAL_IS_INT(
id)) {
4659 switch (JSVAL_TO_INT(
id)) {
4662 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
4664 "JS_NewDouble failed for %f in SFVec3fGetProperty.\n",
4671 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
4673 "JS_NewDouble failed for %f in SFVec3fGetProperty.\n",
4680 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
4682 "JS_NewDouble failed for %f in SFVec3fGetProperty.\n",
4689 #ifdef JSVRMLCLASSESVERBOSE
4690 printf (
"SFVec3fGetProperty, id is NOT an int...\n");
4698SFVec3fSetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp){
4699 JSObject *obj = *hobj.address();
4700 jsid iid = *hiid.address();
4701 jsval *vp = hvp.address();
4707 if (!JS_IdToValue(cx,iid,&
id)) {
4708 printf(
"JS_IdToValue failed in SFVec3fSetProperty.\n");
4713 if(SM_method() == 2){
4715 if ((any = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
4716 printf(
"JS_GetPrivate failed in SFVec3fSetProperty.\n");
4719 if(any->valueChanged)
4720 (*any->valueChanged)++;
4721 cc = any->v->sfvec3f.c;
4724 if ((ptr = (
SFVec3fNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
4725 printf(
"JS_GetPrivate failed in SFVec3fSetProperty.\n");
4728 ptr->valueChanged++;
4729 #ifdef JSVRMLCLASSESVERBOSE
4730 printf(
"SFVec3fSetProperty: obj = %p, id = %d, valueChanged = %d\n",
4731 obj, JSVAL_TO_INT(
id), ptr->valueChanged);
4735 if (!JS_ConvertValue(cx, *vp, JSTYPE_NUMBER, &myv)) {
4736 printf(
"JS_ConvertValue failed in SFVec3fSetProperty.\n");
4740 if (JSVAL_IS_INT(
id)) {
4741 switch (JSVAL_TO_INT(
id)) {
4743 cc[0] = (float) JSVAL_TO_DOUBLE(myv);
4746 cc[1] = (float) JSVAL_TO_DOUBLE(myv);
4749 cc[2] = (float) JSVAL_TO_DOUBLE(myv);
4770JSBool SFVec3dGeneric( JSContext *cx, JSObject *obj,
4771 uintN argc, jsval *argv, jsval *rval,
int op) {
4772 JSObject *_paramObj, *_proto, *_retObj;
4778 double *cc, *cc2, cc3[3], cclhs[3];
4783 int SFParam = FALSE;
4784 int numParam = FALSE;
4787 int retSFVec3d = FALSE;
4788 int retNumeric = FALSE;
4797 if ((op==__3FADD)||(op==__3FDOT)||(op==__3FCROSS)||(op==__3FSUBT))SFParam=TRUE;
4798 if ((op==__3FDIVIDE)||(op==__3FMULT))numParam=TRUE;
4801 if ((op==__3FDOT)||(op==__3FLENGTH)) retNumeric = TRUE;
4802 retSFVec3d = (!retNumeric);
4806 param_isString = JSVAL_IS_STRING (*argv);
4809 if ((SFParam) || (numParam)) {
4811 if (!JSVAL_IS_NUMBER(argv[0])) {
4812 printf (
"SFVec3d param error - number expected\n");
4815 if (!JS_ValueToNumber(cx, argv[0], &d)) {
4816 printf(
"JS_ValueToNumber failed in SFVec3d.\n");
4822 if (param_isString) {
4823 _str = JS_ValueToString(cx, *argv);
4824 charString = JS_EncodeString(cx,_str);
4825 if (sscanf(charString,
"%lf %lf %lf",
4826 &(pars[0]), &(pars[1]), &(pars[2])) != 3) {
4827 printf (
"conversion problem in SFVec3dGeneric\n");
4836 if(SM_method() == 2){
4837 if (argv[0].isObject()) {
4839 if ((_vec2 = (
AnyNative *)JS_GetPrivateFw(cx, JSVAL_TO_OBJECT(argv[0]))) == NULL) {
4840 printf(
"in SFVec3d, RHS was NOT native type \n");
4843 cc2 = _vec2->v->sfvec3d.c;
4849 if (!JS_ConvertArguments(cx, argc, argv,
"o", &_paramObj)) {
4850 printf(
"JS_ConvertArguments failed in SFVec3d.\n");
4854 CHECK_CLASS(cx,_paramObj,argv,__FUNCTION__,SFVec3dClass)
4857 if ((_vec2 = (
SFVec3dNative*)JS_GetPrivateFw(cx, _paramObj)) == NULL) {
4858 printf(
"JS_GetPrivate failed for _paramObj in SFVec3d.\n");
4869 if(SM_method() == 2){
4871 if ((_vec1 = (
AnyNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
4872 printf(
"JS_GetPrivate failed for obj in SFVec3dAdd.\n");
4875 cc = _vec1->v->sfvec3d.c;
4878 if ((_vec1 = (
SFVec3dNative*)JS_GetPrivateFw(cx, obj)) == NULL) {
4879 printf(
"JS_GetPrivate failed for obj in SFVec3dAdd.\n");
4885 #ifdef JSVRMLCLASSESVERBOSE
4886 printf (
"SFVec3d generic, vec2 %f %f %f\n",pars[0],pars[1],pars[2]);
4892 vecaddd(cclhs,cc,cc2);
4895 vecscaled(cclhs,cc,1.0/d);
4898 vecscaled(cclhs,cc,d);
4901 vecdifd(cclhs,cc,cc2);
4904 d = vecdotd(cc,cc2);
4907 veccrossd(cclhs,cc,cc2);
4913 vecnormald(cclhs,cc);
4916 vecnegated(cclhs,cc);
4919 printf (
"woops... %d\n",op);
4923 #ifdef JSVRMLCLASSESVERBOSE
4924 printf (
"past calcs\n");
4929 #ifdef JSVRMLCLASSESVERBOSE
4930 printf (
"returning SFVec3d\n");
4932 if ((_proto = JS_GetPrototypeFw(cx, obj)) == NULL) {
4933 printf(
"JS_GetPrototype failed in SFVec3d.\n");
4937 JS_ConstructObjectFw(cx, &SFVec3dClass, _proto, NULL)) == NULL) {
4938 printf(
"JS_ConstructObject failed in SFVec3d.\n");
4941 *rval = OBJECT_TO_JSVAL(_retObj);
4942 if(SM_method() == 2){
4944 if ((any = (
AnyNative*)JS_GetPrivateFw(cx, _retObj)) == NULL) {
4945 printf(
"JS_GetPrivate failed for _retObj in SFVec3d.\n");
4948 memcpy(any->v->sfvec3d.c,cclhs,
sizeof(
double)*3);
4951 if ((_retNative = (
SFVec3dNative*)JS_GetPrivateFw(cx, _retObj)) == NULL) {
4952 printf(
"JS_GetPrivate failed for _retObj in SFVec3d.\n");
4955 memcpy(_retNative->v.c,cclhs,3*
sizeof(
double));
4957 }
else if (retNumeric) {
4958 if (JS_NewNumberValue(cx,d,rval) == JS_FALSE) {
4959 printf(
"JS_NewDouble failed for %f in SFVec3d.\n",d);
4963 #ifdef JSVRMLCLASSESVERBOSE
4965 printf(
"SFVec3dgeneric: obj = %p, result = [%.9g, %.9g, %.9g]\n",
4967 (_retNative->v).c[0], (_retNative->v).c[1],
4968 (_retNative->v).c[2]);
4971 printf(
"SFVec2fgeneric: obj = %p, result = %.9g\n",
4980SFVec3dAdd(JSContext *cx, uintN argc, jsval *vp) {
4981 JSObject *obj = JS_THIS_OBJECT(cx,vp);
4982 jsval *argv = JS_ARGV(cx,vp);
4984 JSBool retval = SFVec3dGeneric(cx, obj, argc, argv, &rval, __3FADD);
4985 JS_SET_RVAL(cx,vp,rval);
4990SFVec3dCross(JSContext *cx, uintN argc, jsval *vp) {
4991 JSObject *obj = JS_THIS_OBJECT(cx,vp);
4992 jsval *argv = JS_ARGV(cx,vp);
4994 JSBool retval = SFVec3dGeneric(cx, obj, argc, argv, &rval, __3FCROSS);
4995 JS_SET_RVAL(cx,vp,rval);
5000SFVec3dDivide(JSContext *cx, uintN argc, jsval *vp) {
5001 JSObject *obj = JS_THIS_OBJECT(cx,vp);
5002 jsval *argv = JS_ARGV(cx,vp);
5004 JSBool retval = SFVec3dGeneric(cx, obj, argc, argv, &rval, __3FDIVIDE);
5005 JS_SET_RVAL(cx,vp,rval);
5010SFVec3dDot(JSContext *cx, uintN argc, jsval *vp) {
5011 JSObject *obj = JS_THIS_OBJECT(cx,vp);
5012 jsval *argv = JS_ARGV(cx,vp);
5014 JSBool retval = SFVec3dGeneric(cx, obj, argc, argv, &rval, __3FDOT);
5015 JS_SET_RVAL(cx,vp,rval);
5020SFVec3dLength(JSContext *cx, uintN argc, jsval *vp) {
5021 JSObject *obj = JS_THIS_OBJECT(cx,vp);
5022 jsval *argv = JS_ARGV(cx,vp);
5024 JSBool retval = SFVec3dGeneric(cx, obj, argc, argv, &rval, __3FLENGTH);
5025 JS_SET_RVAL(cx,vp,rval);
5031SFVec3dMultiply(JSContext *cx, uintN argc, jsval *vp) {
5032 JSObject *obj = JS_THIS_OBJECT(cx,vp);
5033 jsval *argv = JS_ARGV(cx,vp);
5035 JSBool retval = SFVec3dGeneric(cx, obj, argc, argv, &rval, __3FMULT);
5036 JS_SET_RVAL(cx,vp,rval);
5042SFVec3dNegate(JSContext *cx, uintN argc, jsval *vp) {
5043 JSObject *obj = JS_THIS_OBJECT(cx,vp);
5044 jsval *argv = JS_ARGV(cx,vp);
5046 JSBool retval = SFVec3dGeneric(cx, obj, argc, argv, &rval, __3FNEGATE);
5047 JS_SET_RVAL(cx,vp,rval);
5052SFVec3dNormalize(JSContext *cx, uintN argc, jsval *vp) {
5053 JSObject *obj = JS_THIS_OBJECT(cx,vp);
5054 jsval *argv = JS_ARGV(cx,vp);
5056 JSBool retval = SFVec3dGeneric(cx, obj, argc, argv, &rval, __3FNORMALIZE);
5057 JS_SET_RVAL(cx,vp,rval);
5062SFVec3dSubtract(JSContext *cx, uintN argc, jsval *vp) {
5063 JSObject *obj = JS_THIS_OBJECT(cx,vp);
5064 jsval *argv = JS_ARGV(cx,vp);
5066 JSBool retval = SFVec3dGeneric(cx, obj, argc, argv, &rval, __3FSUBT);
5067 JS_SET_RVAL(cx,vp,rval);
5072SFVec3dToString(JSContext *cx, uintN argc, jsval *vp) {
5073 JSObject *obj = JS_THIS_OBJECT(cx,vp);
5074 jsval *argv = JS_ARGV(cx,vp);
5083 if ((ptr = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
5084 printf(
"JS_GetPrivate failed in SFVec3dToString.\n");
5087 cc = ptr->v->sfvec3d.c;
5090 if ((ptr = (
SFVec3dNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
5091 printf(
"JS_GetPrivate failed in SFVec3dToString.\n");
5096 memset(buff, 0, STRING);
5097 sprintf(buff,
"%.9g %.9g %.9g",
5098 cc[0], cc[1], cc[2]);
5099 _str = JS_NewStringCopyZ(cx, buff);
5100 JS_SET_RVAL(cx,vp,STRING_TO_JSVAL(_str));
5102 #ifdef JSVRMLCLASSESVERBOSE
5103 printf (
"SFVec3dToString, string is :%s:\n",buff);
5110SFVec3dAssign(JSContext *cx, uintN argc, jsval *vp) {
5111 JSObject *obj = JS_THIS_OBJECT(cx,vp);
5112 jsval *argv = JS_ARGV(cx,vp);
5113 JSString *_id_jsstr;
5114 JSObject *_from_obj;
5121 #ifdef JSVRMLCLASSESVERBOSE
5122 printf (
"start of SFVec3dAssign\n");
5124 if(SM_method() == 2){
5126 if ((lhs = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
5127 printf(
"JS_GetPrivate failed for obj in SFVec3dAssign.\n");
5130 if (!(*vp).isObject())
5132 if ((rhs = (
AnyNative *)JS_GetPrivateFw(cx, JSVAL_TO_OBJECT(*vp))) == NULL) {
5133 printf(
"in setECMANative, RHS was NOT native type \n");
5136 AnyNativeAssign(lhs,rhs);
5141 if ((ptr = (
SFVec3dNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
5142 printf(
"JS_GetPrivate failed for obj in SFVec3dAssign.\n");
5146 CHECK_CLASS(cx,obj,argv,__FUNCTION__,SFVec3dClass)
5148 if (JS_ConvertArguments(cx, argc, argv,
"oS", &_from_obj, &_id_jsstr) == JS_TRUE) {
5149 _id_str = JS_EncodeString(cx,_id_jsstr);
5151 printf(
"JS_ConvertArguments failed in SFVec3dAssign.\n");
5155 CHECK_CLASS(cx,_from_obj,argv,__FUNCTION__,SFVec3dClass)
5157 if ((fptr = (
SFVec3dNative *)JS_GetPrivateFw(cx, _from_obj)) == NULL) {
5158 printf(
"JS_GetPrivate failed for _from_obj in SFVec3dAssign.\n");
5161 #ifdef JSVRMLCLASSESVERBOSE
5162 printf(
"SFVec3dAssign: obj = %p, id = \"%s\", from = %p\n",
5163 obj, _id_str, _from_obj);
5166 SFVec3dNativeAssign(ptr, fptr);
5169 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
5171 #ifdef JSVRMLCLASSESVERBOSE
5172 printf (
"end of SFVec3dAssign\n");
5179SFVec3dConstr(JSContext *cx, uintN argc, jsval *vp) {
5180 JSObject *obj = JS_NewObject(cx,&SFVec3dClass,NULL,NULL);
5181 jsval *argv = JS_ARGV(cx,vp);
5185 #ifdef JSVRMLCLASSESVERBOSE
5186 printf (
"start of SFVec3dConstr\n");
5191 if(SM_method() == 2){
5193 if ((any = (
AnyNative *) AnyNativeNew(FIELDTYPE_SFVec3d,NULL,NULL)) == NULL) {
5194 printf(
"SFVec3dNativeNew failed in SFVec3dConstr.\n");
5198 if (!JS_SetPrivateFw(cx, obj, any)) {
5199 printf(
"JS_SetPrivate failed in SFVec3dConstr.\n");
5202 cc = any->v->sfvec3d.c;
5206 printf(
"SFVec3dNativeNew failed in SFVec3dConstr.\n");
5214 if (!JS_SetPrivateFw(cx, obj, ptr)) {
5215 printf(
"JS_SetPrivate failed in SFVec3dConstr.\n");
5219 ptr->valueChanged = 1;
5222 cc[0] = (float) 0.0;
5223 cc[1] = (float) 0.0;
5224 cc[2] = (float) 0.0;
5226 if (!JS_ConvertArguments(cx, argc, argv,
"d d d",
5227 &(pars[0]), &(pars[1]), &(pars[2]))) {
5228 printf(
"JS_ConvertArguments failed in SFVec3dConstr.\n");
5231 cc[0] = (float) pars[0];
5232 cc[1] = (float) pars[1];
5233 cc[2] = (float) pars[2];
5235 #ifdef JSVRMLCLASSESVERBOSE
5236 printf(
"SFVec3dConstr: obj = %p, %u args, %f %f %f\n",
5238 (ptr->v).c[0], (ptr->v).c[1], (ptr->v).c[2]);
5242 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
5247SFVec3dGetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp){
5248 JSObject *obj = *hobj.address();
5249 jsid iid = *hiid.address();
5250 jsval *vp = hvp.address();
5253 #ifdef JSVRMLCLASSESVERBOSE
5259 if (!JS_IdToValue(cx,iid,&
id)) {
5260 printf(
"JS_IdToValue failed in SFVec3dGetProperty.\n");
5265 #ifdef JSVRMLCLASSESVERBOSE
5271 _idStr = JS_ValueToString(cx, *vp);
5273 _id_c = JS_GetStringBytes(_idStr);
5275 _id_c = JS_EncodeString(cx,_idStr);
5281 if ((ptr = (
AnyNative *)JS_GetPrivateFw(cx,obj)) == NULL) {
5282 printf(
"JS_GetPrivate failed in SFVec3dGetProperty.\n");
5285 cc = ptr->v->sfvec3d.c;
5288 if ((ptr = (
SFVec3dNative *)JS_GetPrivateFw(cx,obj)) == NULL) {
5289 printf(
"JS_GetPrivate failed in SFVec3dGetProperty.\n");
5294 if (JSVAL_IS_INT(
id)) {
5295 switch (JSVAL_TO_INT(
id)) {
5298 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
5300 "JS_NewDouble failed for %f in SFVec3dGetProperty.\n",
5307 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
5309 "JS_NewDouble failed for %f in SFVec3dGetProperty.\n",
5316 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
5318 "JS_NewDouble failed for %f in SFVec3dGetProperty.\n",
5325 #ifdef JSVRMLCLASSESVERBOSE
5326 printf (
"SFVec3dGetProperty, id is NOT an int...\n");
5334SFVec3dSetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp){
5335 JSObject *obj = *hobj.address();
5336 jsid iid = *hiid.address();
5337 jsval *vp = hvp.address();
5343 if (!JS_IdToValue(cx,iid,&
id)) {
5344 printf(
"JS_IdToValue failed in SFVec3dSetProperty.\n");
5351 if ((ptr = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
5352 printf(
"JS_GetPrivate failed in SFVec3dSetProperty.\n");
5355 if(ptr->valueChanged)
5356 (*ptr->valueChanged)++;
5357 #ifdef JSVRMLCLASSESVERBOSE
5358 printf(
"SFVec3dSetProperty: obj = %p, id = %d, valueChanged = %d\n",
5359 obj, JSVAL_TO_INT(
id), ptr->valueChanged);
5361 cc = ptr->v->sfvec3d.c;
5364 if ((ptr = (
SFVec3dNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
5365 printf(
"JS_GetPrivate failed in SFVec3dSetProperty.\n");
5368 ptr->valueChanged++;
5369 #ifdef JSVRMLCLASSESVERBOSE
5370 printf(
"SFVec3dSetProperty: obj = %p, id = %d, valueChanged = %d\n",
5371 obj, JSVAL_TO_INT(
id), ptr->valueChanged);
5375 if (!JS_ConvertValue(cx, *vp, JSTYPE_NUMBER, &myv)) {
5376 printf(
"JS_ConvertValue failed in SFVec3dSetProperty.\n");
5380 if (JSVAL_IS_INT(
id)) {
5381 switch (JSVAL_TO_INT(
id)) {
5383 cc[0] = JSVAL_TO_DOUBLE(myv);
5386 cc[1] = JSVAL_TO_DOUBLE(myv);
5389 cc[2] = JSVAL_TO_DOUBLE(myv);
5398SFVec4fToString(JSContext *cx, uintN argc, jsval *vp) {
5399 JSObject *obj = JS_THIS_OBJECT(cx,vp);
5400 jsval *argv = JS_ARGV(cx,vp);
5409 if ((ptr = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
5410 printf(
"JS_GetPrivate failed in SFVec4fToString.\n");
5413 cc = ptr->v->sfvec4f.c;
5417 if ((ptr = (
SFVec4fNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
5418 printf(
"JS_GetPrivate failed in SFVec4fToString.\n");
5423 memset(buff, 0, STRING);
5424 sprintf(buff,
"%.9g %.9g %.9g %.9g",
5425 cc[0], cc[1], cc[2],cc[3]);
5426 _str = JS_NewStringCopyZ(cx, buff);
5427 JS_SET_RVAL(cx,vp,STRING_TO_JSVAL(_str));
5429 #ifdef JSVRMLCLASSESVERBOSE
5430 printf (
"SFVec4fToString, string is :%s:\n",buff);
5437SFVec4fAssign(JSContext *cx, uintN argc, jsval *vp) {
5438 JSObject *obj = JS_THIS_OBJECT(cx,vp);
5439 jsval *argv = JS_ARGV(cx,vp);
5440 JSString *_id_jsstr;
5441 JSObject *_from_obj;
5447 #ifdef JSVRMLCLASSESVERBOSE
5448 printf (
"start of SFVec4fAssign\n");
5450 if(SM_method() == 2){
5452 if ((lhs = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
5453 printf(
"JS_GetPrivate failed for obj in SFVec4fAssign.\n");
5456 if (!(*vp).isObject())
5458 if ((rhs = (
AnyNative *)JS_GetPrivateFw(cx, JSVAL_TO_OBJECT(*vp))) == NULL) {
5459 printf(
"JS_ConvertArguments failed in SFVec4fAssign. \n");
5462 AnyNativeAssign(lhs,rhs);
5466 if ((ptr = (
SFVec4fNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
5467 printf(
"JS_GetPrivate failed for obj in SFVec4fAssign.\n");
5471 CHECK_CLASS(cx,obj,argv,__FUNCTION__,SFVec4fClass)
5473 if (JS_ConvertArguments(cx, argc, argv,
"oS", &_from_obj, &_id_jsstr) == JS_TRUE) {
5474 _id_str = JS_EncodeString(cx,_id_jsstr);
5476 printf(
"JS_ConvertArguments failed in SFVec4fAssign.\n");
5480 CHECK_CLASS(cx,_from_obj,argv,__FUNCTION__,SFVec4fClass)
5482 if ((fptr = (
SFVec4fNative *)JS_GetPrivateFw(cx, _from_obj)) == NULL) {
5483 printf(
"JS_GetPrivate failed for _from_obj in SFVec4fAssign.\n");
5486 #ifdef JSVRMLCLASSESVERBOSE
5487 printf(
"SFVec4fAssign: obj = %p, id = \"%s\", from = %p\n",
5488 obj, _id_str, _from_obj);
5491 SFVec4fNativeAssign(ptr, fptr);
5493 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
5495 #ifdef JSVRMLCLASSESVERBOSE
5496 printf (
"end of SFVec4fAssign\n");
5503SFVec4fConstr(JSContext *cx, uintN argc, jsval *vp) {
5504 JSObject *obj = JS_NewObject(cx,&SFVec4fClass,NULL,NULL);
5505 jsval *argv = JS_ARGV(cx,vp);
5509 #ifdef JSVRMLCLASSESVERBOSE
5510 printf (
"start of SFVec4fConstr\n");
5514 if(SM_method() == 2){
5516 if((any = (
AnyNative*)AnyNativeNew(FIELDTYPE_SFVec4f,NULL,NULL)) == NULL){
5517 printf(
"AnyfNativeNew failed in SFVec4fConstr.\n");
5520 if (!JS_SetPrivateFw(cx, obj, any)) {
5521 printf(
"JS_SetPrivate failed in SFVec4fConstr.\n");
5524 cc = any->v->sfvec4f.c;
5528 printf(
"SFVec4fNativeNew failed in SFVec4fConstr.\n");
5531 ptr->valueChanged = 1;
5537 if (!JS_SetPrivateFw(cx, obj, ptr)) {
5538 printf(
"JS_SetPrivate failed in SFVec4fConstr.\n");
5544 cc[0] = (float) 0.0;
5545 cc[1] = (float) 0.0;
5546 cc[2] = (float) 0.0;
5547 cc[3] = (float) 0.0;
5549 if (!JS_ConvertArguments(cx, argc, argv,
"d d d d",
5550 &(pars[0]), &(pars[1]), &(pars[2]), &(pars[3]))) {
5551 printf(
"JS_ConvertArguments failed in SFVec4fConstr.\n");
5554 cc[0] = (float) pars[0];
5555 cc[1] = (float) pars[1];
5556 cc[2] = (float) pars[2];
5557 cc[3] = (float) pars[3];
5559 #ifdef JSVRMLCLASSESVERBOSE
5560 printf(
"SFVec4fConstr: obj = %p, %u args, %f %f %f %f\n",
5562 cc[0], cc[1], cc[2], cc[3]);
5565 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
5570SFVec4fGetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp){
5571 JSObject *obj = *hobj.address();
5572 jsid iid = *hiid.address();
5573 jsval *vp = hvp.address();
5577 #ifdef JSVRMLCLASSESVERBOSE
5583 if (!JS_IdToValue(cx,iid,&
id)) {
5584 printf(
"JS_IdToValue failed in SFVec4fGetProperty.\n");
5589 #ifdef JSVRMLCLASSESVERBOSE
5597 _idStr = JS_ValueToString(cx, *vp);
5599 _id_c = JS_GetStringBytes(_idStr);
5601 _id_c = JS_EncodeString(cx,_idStr);
5607 if ((any = (
AnyNative *)JS_GetPrivateFw(cx,obj)) == NULL) {
5608 printf(
"JS_GetPrivate failed in SFVec4fGetProperty.\n");
5611 cc = any->v->sfvec4f.c;
5614 if ((ptr = (
SFVec4fNative *)JS_GetPrivateFw(cx,obj)) == NULL) {
5615 printf(
"JS_GetPrivate failed in SFVec4fGetProperty.\n");
5620 if (JSVAL_IS_INT(
id)) {
5621 switch (JSVAL_TO_INT(
id)) {
5624 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
5626 "JS_NewDouble failed for %f in SFVec4fGetProperty.\n",
5633 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
5635 "JS_NewDouble failed for %f in SFVec4fGetProperty.\n",
5642 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
5644 "JS_NewDouble failed for %f in SFVec4fGetProperty.\n",
5651 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
5653 "JS_NewDouble failed for %f in SFVec4fGetProperty.\n",
5660 #ifdef JSVRMLCLASSESVERBOSE
5661 printf (
"SFVec4fGetProperty, id is NOT an int...\n");
5669SFVec4fSetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp){
5670 JSObject *obj = *hobj.address();
5671 jsid iid = *hiid.address();
5672 jsval *vp = hvp.address();
5679 if (!JS_IdToValue(cx,iid,&
id)) {
5680 printf(
"JS_IdToValue failed in SFVec4fSetProperty.\n");
5684 if(SM_method() == 2){
5686 if ((any = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
5687 printf(
"JS_GetPrivate failed in SFVec4fSetProperty.\n");
5690 if(any->valueChanged)
5691 (*any->valueChanged)++;
5692 cc = any->v->sfvec4f.c;
5696 if ((ptr = (
SFVec4fNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
5697 printf(
"JS_GetPrivate failed in SFVec4fSetProperty.\n");
5700 ptr->valueChanged++;
5701 #ifdef JSVRMLCLASSESVERBOSE
5702 printf(
"SFVec4fSetProperty: obj = %p, id = %d, valueChanged = %d\n",
5703 obj, JSVAL_TO_INT(
id), ptr->valueChanged);
5707 if (!JS_ConvertValue(cx, *vp, JSTYPE_NUMBER, &myv)) {
5708 printf(
"JS_ConvertValue failed in SFVec4fSetProperty.\n");
5712 if (JSVAL_IS_INT(
id)) {
5713 switch (JSVAL_TO_INT(
id)) {
5715 cc[0] = (float) JSVAL_TO_DOUBLE(myv);
5718 cc[1] = (float) JSVAL_TO_DOUBLE(myv);
5721 cc[2] = (float) JSVAL_TO_DOUBLE(myv);
5724 cc[3] = (float) JSVAL_TO_DOUBLE(myv);
5734SFVec4dToString(JSContext *cx, uintN argc, jsval *vp) {
5735 JSObject *obj = JS_THIS_OBJECT(cx,vp);
5736 jsval *argv = JS_ARGV(cx,vp);
5746 if ((ptr = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
5747 printf(
"JS_GetPrivate failed in SFVec4dToString.\n");
5750 cc = ptr->v->sfvec4d.c;
5753 if ((ptr = (
SFVec4dNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
5754 printf(
"JS_GetPrivate failed in SFVec4dToString.\n");
5759 memset(buff, 0, STRING);
5760 sprintf(buff,
"%.9g %.9g %.9g %.9g",
5761 cc[0], cc[1], cc[2],cc[3]);
5762 _str = JS_NewStringCopyZ(cx, buff);
5764 JS_SET_RVAL(cx,vp,STRING_TO_JSVAL(_str));
5766 #ifdef JSVRMLCLASSESVERBOSE
5767 printf (
"SFVec4dToString, string is :%s:\n",buff);
5774SFVec4dAssign(JSContext *cx, uintN argc, jsval *vp) {
5775 JSObject *obj = JS_THIS_OBJECT(cx,vp);
5776 jsval *argv = JS_ARGV(cx,vp);
5777 JSString *_id_jsstr;
5778 JSObject *_from_obj;
5783 #ifdef JSVRMLCLASSESVERBOSE
5784 printf (
"start of SFVec4dAssign\n");
5787 if(SM_method() == 2){
5789 if ((lhs = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
5790 printf(
"JS_GetPrivate failed for obj in SFVec4dAssign.\n");
5793 if (!(*vp).isObject())
5795 if ((rhs = (
AnyNative *)JS_GetPrivateFw(cx, JSVAL_TO_OBJECT(*vp))) == NULL) {
5796 printf(
"in SFVec4dAssign, RHS was NOT native type \n");
5799 AnyNativeAssign(lhs,rhs);
5804 if ((ptr = (
SFVec4dNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
5805 printf(
"JS_GetPrivate failed for obj in SFVec4dAssign.\n");
5809 CHECK_CLASS(cx,obj,argv,__FUNCTION__,SFVec4dClass)
5811 if (JS_ConvertArguments(cx, argc, argv,
"oS", &_from_obj, &_id_jsstr) == JS_TRUE) {
5812 _id_str = JS_EncodeString(cx,_id_jsstr);
5814 printf(
"JS_ConvertArguments failed in SFVec4dAssign.\n");
5818 CHECK_CLASS(cx,_from_obj,argv,__FUNCTION__,SFVec4dClass)
5820 if ((fptr = (
SFVec4dNative *)JS_GetPrivateFw(cx, _from_obj)) == NULL) {
5821 printf(
"JS_GetPrivate failed for _from_obj in SFVec4dAssign.\n");
5824 #ifdef JSVRMLCLASSESVERBOSE
5825 printf(
"SFVec4dAssign: obj = %p, id = \"%s\", from = %p\n",
5826 obj, _id_str, _from_obj);
5829 SFVec4dNativeAssign(ptr, fptr);
5831 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
5833 #ifdef JSVRMLCLASSESVERBOSE
5834 printf (
"end of SFVec4dAssign\n");
5841SFVec4dConstr(JSContext *cx, uintN argc, jsval *vp) {
5842 JSObject *obj = JS_NewObject(cx,&SFVec4dClass,NULL,NULL);
5843 jsval *argv = JS_ARGV(cx,vp);
5847 #ifdef JSVRMLCLASSESVERBOSE
5848 printf (
"start of SFVec4dConstr\n");
5852 if(SM_method() == 2){
5854 if ((any = (
AnyNative *) AnyNativeNew(FIELDTYPE_SFVec4d,NULL,NULL)) == NULL) {
5855 printf(
"SFVec3dNativeNew failed in SFVec3dConstr.\n");
5859 if (!JS_SetPrivateFw(cx, obj, any)) {
5860 printf(
"JS_SetPrivate failed in SFVec3dConstr.\n");
5863 cc = any->v->sfvec4d.c;
5868 printf(
"SFVec4dNativeNew failed in SFVec4dConstr.\n");
5876 if (!JS_SetPrivateFw(cx, obj, ptr)) {
5877 printf(
"JS_SetPrivate failed in SFVec4dConstr.\n");
5880 ptr->valueChanged = 1;
5884 cc[0] = (float) 0.0;
5885 cc[1] = (float) 0.0;
5886 cc[2] = (float) 0.0;
5887 cc[3] = (float) 0.0;
5889 if (!JS_ConvertArguments(cx, argc, argv,
"d d d d",
5890 &(pars[0]), &(pars[1]), &(pars[2]), &(pars[3]))) {
5891 printf(
"JS_ConvertArguments failed in SFVec4dConstr.\n");
5894 cc[0] = (float) pars[0];
5895 cc[1] = (float) pars[1];
5896 cc[2] = (float) pars[2];
5897 cc[3] = (float) pars[3];
5899 #ifdef JSVRMLCLASSESVERBOSE
5900 printf(
"SFVec4dConstr: obj = %p, %u args, %f %f %f %f\n",
5902 cc[0], cc[1], cc[2], cc[3]);
5906 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
5911SFVec4dGetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp){
5912 JSObject *obj = *hobj.address();
5913 jsid iid = *hiid.address();
5914 jsval *vp = hvp.address();
5918 #ifdef JSVRMLCLASSESVERBOSE
5924 if (!JS_IdToValue(cx,iid,&
id)) {
5925 printf(
"JS_IdToValue failed in SFVec4dGetProperty.\n");
5930 #ifdef JSVRMLCLASSESVERBOSE
5934 _idStr = JS_ValueToString(cx, *vp);
5936 _id_c = JS_GetStringBytes(_idStr);
5938 _id_c = JS_EncodeString(cx,_idStr);
5944 if ((ptr = (
AnyNative *)JS_GetPrivateFw(cx,obj)) == NULL) {
5945 printf(
"JS_GetPrivate failed in SFVec4dGetProperty.\n");
5948 cc = ptr->v->sfvec4d.c;
5951 if ((ptr = (
SFVec4dNative *)JS_GetPrivateFw(cx,obj)) == NULL) {
5952 printf(
"JS_GetPrivate failed in SFVec4dGetProperty.\n");
5957 if (JSVAL_IS_INT(
id)) {
5958 switch (JSVAL_TO_INT(
id)) {
5961 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
5963 "JS_NewDouble failed for %f in SFVec4dGetProperty.\n",
5970 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
5972 "JS_NewDouble failed for %f in SFVec4dGetProperty.\n",
5979 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
5981 "JS_NewDouble failed for %f in SFVec4dGetProperty.\n",
5988 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
5990 "JS_NewDouble failed for %f in SFVec4dGetProperty.\n",
5997 #ifdef JSVRMLCLASSESVERBOSE
5998 printf (
"SFVec4dGetProperty, id is NOT an int...\n");
6006SFVec4dSetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp){
6007 JSObject *obj = *hobj.address();
6008 jsid iid = *hiid.address();
6009 jsval *vp = hvp.address();
6016 if (!JS_IdToValue(cx,iid,&
id)) {
6017 printf(
"JS_IdToValue failed in SFVec4dSetProperty.\n");
6023 if ((ptr = (
AnyNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
6024 printf(
"JS_GetPrivate failed in SFVec4dSetProperty.\n");
6027 if(ptr->valueChanged)
6028 (*ptr->valueChanged)++;
6029 #ifdef JSVRMLCLASSESVERBOSE
6030 printf(
"SFVec4dSetProperty: obj = %p, id = %d, valueChanged = %d\n",
6031 obj, JSVAL_TO_INT(
id), ptr->valueChanged);
6033 cc = ptr->v->sfvec4d.c;
6037 if ((ptr = (
SFVec4dNative *)JS_GetPrivateFw(cx, obj)) == NULL) {
6038 printf(
"JS_GetPrivate failed in SFVec4dSetProperty.\n");
6041 ptr->valueChanged++;
6042 #ifdef JSVRMLCLASSESVERBOSE
6043 printf(
"SFVec4dSetProperty: obj = %p, id = %d, valueChanged = %d\n",
6044 obj, JSVAL_TO_INT(
id), ptr->valueChanged);
6048 if (!JS_ConvertValue(cx, *vp, JSTYPE_NUMBER, &myv)) {
6049 printf(
"JS_ConvertValue failed in SFVec4dSetProperty.\n");
6053 if (JSVAL_IS_INT(
id)) {
6054 switch (JSVAL_TO_INT(
id)) {
6056 cc[0] = (float) JSVAL_TO_DOUBLE(myv);
6059 cc[1] = (float) JSVAL_TO_DOUBLE(myv);
6062 cc[2] = (float) JSVAL_TO_DOUBLE(myv);
6065 cc[3] = (float) JSVAL_TO_DOUBLE(myv);