00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #include <tcl.h>
00015 #include <tk.h>
00016 #include <stdio.h>
00017 #include <string.h>
00018 #include "sadie.h"
00019
00020
00021
00022 static char rcsid[] = "$Id: Sadie_Tools.c,v 2.3 1999/02/11 14:33:03 conner Exp $";
00023
00024
00025
00026
00027
00028
00029 extern short nlev;
00030 extern short csize;
00031 extern double weight;
00032 extern double *count;
00033 extern PIXEL gain;
00034 extern PIXEL bias;
00035 extern PIXEL gmin;
00036 extern PIXEL gmax;
00037 extern PIXEL thresh;
00038 extern PIXEL gbrk[2][4];
00039 extern PIXEL *table;
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062 int Sadie_Tools_DestripeCmd(ClientData client_data, Tcl_Interp* interp, int argc, char *argv[])
00063 {
00064 Tcl_Obj* tclobj=NULL;
00065 Tcl_Obj* tclarrayname = NULL;
00066 Tcl_Obj* tclindexname = NULL;
00067 char msg[SLEN];
00068 char* array=NULL;
00069 char* tempstr=NULL;
00070 int strlen;
00071 int inimgaddr;
00072 IMAGE *inimg=NULL;
00073 int outimgaddr;
00074 IMAGE *outimg=NULL;
00075 char *outname=NULL;
00076 int option, reference, period, detector, number;
00077
00078 if( argc != 2 ) {
00079 Tcl_AppendResult(interp,"wrong # args: should be \"",
00080 argv[0], " arrayname\"", (char *) NULL);
00081 return TCL_ERROR;
00082 }
00083 array=argv[1];
00084
00085
00086
00087 tclarrayname = Tcl_NewStringObj(array,-1);
00088 tclindexname = Tcl_NewStringObj("inimg,addr",-1);
00089 if (tclobj = Tcl_ObjGetVar2(interp, tclarrayname , tclindexname , TCL_GLOBAL_ONLY | TCL_LEAVE_ERR_MSG)) {
00090 tempstr = Tcl_GetStringFromObj(tclobj,&strlen);
00091 if (strlen <= 0) return TCL_ERROR;
00092 sscanf(tempstr,"%x",&inimgaddr);
00093 inimg = (IMAGE *) inimgaddr;
00094 } else {
00095 return TCL_ERROR;
00096 }
00097 Tcl_DecrRefCount(tclarrayname);
00098 Tcl_DecrRefCount(tclindexname);
00099
00100
00101
00102 tclarrayname = Tcl_NewStringObj(array,-1);
00103 tclindexname = Tcl_NewStringObj("option",-1);
00104 if (tclobj = Tcl_ObjGetVar2(interp, tclarrayname , tclindexname , TCL_GLOBAL_ONLY | TCL_LEAVE_ERR_MSG)) {
00105 if (Tcl_GetIntFromObj(interp,tclobj,&option) == TCL_ERROR) return TCL_ERROR;
00106 } else {
00107 return TCL_ERROR;
00108 }
00109 Tcl_DecrRefCount(tclarrayname);
00110 Tcl_DecrRefCount(tclindexname);
00111
00112
00113
00114 tclarrayname = Tcl_NewStringObj(array,-1);
00115 tclindexname = Tcl_NewStringObj("reference",-1);
00116 if (tclobj = Tcl_ObjGetVar2(interp, tclarrayname , tclindexname , TCL_GLOBAL_ONLY | TCL_LEAVE_ERR_MSG)) {
00117 if (Tcl_GetIntFromObj(interp,tclobj,&reference) == TCL_ERROR) return TCL_ERROR;
00118 } else {
00119 return TCL_ERROR;
00120 }
00121 Tcl_DecrRefCount(tclarrayname);
00122 Tcl_DecrRefCount(tclindexname);
00123
00124
00125
00126 tclarrayname = Tcl_NewStringObj(array,-1);
00127 tclindexname = Tcl_NewStringObj("period",-1);
00128 if (tclobj = Tcl_ObjGetVar2(interp, tclarrayname , tclindexname , TCL_GLOBAL_ONLY | TCL_LEAVE_ERR_MSG)) {
00129 if (Tcl_GetIntFromObj(interp,tclobj,&period) == TCL_ERROR) return TCL_ERROR;
00130 } else {
00131 return TCL_ERROR;
00132 }
00133 Tcl_DecrRefCount(tclarrayname);
00134 Tcl_DecrRefCount(tclindexname);
00135
00136
00137
00138 tclarrayname = Tcl_NewStringObj(array,-1);
00139 tclindexname = Tcl_NewStringObj("detector",-1);
00140 if (tclobj = Tcl_ObjGetVar2(interp, tclarrayname , tclindexname , TCL_GLOBAL_ONLY | TCL_LEAVE_ERR_MSG)) {
00141 if (Tcl_GetIntFromObj(interp,tclobj,&detector) == TCL_ERROR) return TCL_ERROR;
00142 } else {
00143 return TCL_ERROR;
00144 }
00145 Tcl_DecrRefCount(tclarrayname);
00146 Tcl_DecrRefCount(tclindexname);
00147
00148
00149
00150 tclarrayname = Tcl_NewStringObj(array,-1);
00151 tclindexname = Tcl_NewStringObj("number",-1);
00152 if (tclobj = Tcl_ObjGetVar2(interp, tclarrayname , tclindexname , TCL_GLOBAL_ONLY | TCL_LEAVE_ERR_MSG)) {
00153 if (Tcl_GetIntFromObj(interp,tclobj,&number) == TCL_ERROR) return TCL_ERROR;
00154 } else {
00155 return TCL_ERROR;
00156 }
00157 Tcl_DecrRefCount(tclarrayname);
00158 Tcl_DecrRefCount(tclindexname);
00159
00160
00161
00162 tclarrayname = Tcl_NewStringObj(array,-1);
00163 tclindexname = Tcl_NewStringObj("outname",-1);
00164 if (tclobj = Tcl_ObjGetVar2(interp, tclarrayname , tclindexname , TCL_GLOBAL_ONLY | TCL_LEAVE_ERR_MSG)) {
00165 outname = Tcl_GetStringFromObj(tclobj,&strlen);
00166 if (strlen <= 0) return TCL_ERROR;
00167 } else {
00168 return TCL_ERROR;
00169 }
00170 Tcl_DecrRefCount(tclarrayname);
00171 Tcl_DecrRefCount(tclindexname);
00172
00173
00174 DESTRIPE(inimg,option,reference,period,detector,number,&outimg);
00175
00176
00177 if (CHECKIMG(outimg)) sprintf(outimg->text, "%s", outname);
00178 outimgaddr = (int) outimg;
00179
00180
00181 sprintf(msg, "%x", outimgaddr);
00182 Tcl_SetResult(interp, msg, TCL_VOLATILE);
00183
00184 return TCL_OK;
00185 }
00186
00187
00188
00189
00190
00191
00192
00193
00194
00195
00196
00197
00198
00199
00200
00201
00202
00203
00204
00205
00206
00207 int Sadie_Tools_ContMapCmd(ClientData client_data, Tcl_Interp* interp, int argc, char *argv[])
00208 {
00209 Tcl_Obj* tclobj=NULL;
00210 Tcl_Obj* tclarrayname = NULL;
00211 Tcl_Obj* tclindexname = NULL;
00212 char msg[SLEN];
00213 char* array=NULL;
00214 char* tempstr=NULL;
00215 int strlen;
00216 int inimgaddr;
00217 IMAGE *inimg=NULL;
00218 int outimgaddr;
00219 IMAGE *outimg=NULL;
00220 char *outname=NULL;
00221 int number;
00222 double width;
00223
00224 if( argc != 2 ) {
00225 Tcl_AppendResult(interp,"wrong # args: should be \"",
00226 argv[0], " arrayname\"", (char *) NULL);
00227 return TCL_ERROR;
00228 }
00229 array=argv[1];
00230
00231
00232
00233 tclarrayname = Tcl_NewStringObj(array,-1);
00234 tclindexname = Tcl_NewStringObj("inimg,addr",-1);
00235 if (tclobj = Tcl_ObjGetVar2(interp, tclarrayname , tclindexname , TCL_GLOBAL_ONLY | TCL_LEAVE_ERR_MSG)) {
00236 tempstr = Tcl_GetStringFromObj(tclobj,&strlen);
00237 if (strlen <= 0) return TCL_ERROR;
00238 sscanf(tempstr,"%x",&inimgaddr);
00239 inimg = (IMAGE *) inimgaddr;
00240 } else {
00241 return TCL_ERROR;
00242 }
00243 Tcl_DecrRefCount(tclarrayname);
00244 Tcl_DecrRefCount(tclindexname);
00245
00246
00247
00248 tclarrayname = Tcl_NewStringObj(array,-1);
00249 tclindexname = Tcl_NewStringObj("number",-1);
00250 if (tclobj = Tcl_ObjGetVar2(interp, tclarrayname , tclindexname , TCL_GLOBAL_ONLY | TCL_LEAVE_ERR_MSG)) {
00251 if (Tcl_GetIntFromObj(interp,tclobj,&number) == TCL_ERROR) return TCL_ERROR;
00252 } else {
00253 return TCL_ERROR;
00254 }
00255 Tcl_DecrRefCount(tclarrayname);
00256 Tcl_DecrRefCount(tclindexname);
00257
00258
00259
00260 tclarrayname = Tcl_NewStringObj(array,-1);
00261 tclindexname = Tcl_NewStringObj("width",-1);
00262 if (tclobj = Tcl_ObjGetVar2(interp, tclarrayname , tclindexname , TCL_GLOBAL_ONLY | TCL_LEAVE_ERR_MSG)) {
00263 if (Tcl_GetDoubleFromObj(interp,tclobj,&width) == TCL_ERROR) return TCL_ERROR;
00264 } else {
00265 return TCL_ERROR;
00266 }
00267 Tcl_DecrRefCount(tclarrayname);
00268 Tcl_DecrRefCount(tclindexname);
00269
00270
00271
00272 tclarrayname = Tcl_NewStringObj(array,-1);
00273 tclindexname = Tcl_NewStringObj("outname",-1);
00274 if (tclobj = Tcl_ObjGetVar2(interp, tclarrayname , tclindexname , TCL_GLOBAL_ONLY | TCL_LEAVE_ERR_MSG)) {
00275 outname = Tcl_GetStringFromObj(tclobj,&strlen);
00276 if (strlen <= 0) return TCL_ERROR;
00277 } else {
00278 return TCL_ERROR;
00279 }
00280 Tcl_DecrRefCount(tclarrayname);
00281 Tcl_DecrRefCount(tclindexname);
00282
00283
00284 CONTOUR(inimg,number,width,&outimg);
00285
00286
00287 if (CHECKIMG(outimg)) sprintf(outimg->text, "%s", outname);
00288 outimgaddr = (int) outimg;
00289
00290
00291 sprintf(msg, "%x", outimgaddr);
00292 Tcl_SetResult(interp, msg, TCL_VOLATILE);
00293
00294 return TCL_OK;
00295 }
00296
00297
00298
00299
00300
00301
00302
00303
00304
00305
00306
00307
00308
00309
00310
00311
00312
00313
00314
00315
00316
00317
00318 int Sadie_Tools_ReliefCmd(ClientData client_data, Tcl_Interp* interp, int argc, char *argv[])
00319 {
00320 Tcl_Obj* tclobj=NULL;
00321 Tcl_Obj* tclarrayname = NULL;
00322 Tcl_Obj* tclindexname = NULL;
00323 char msg[SLEN];
00324 char* array=NULL;
00325 char* tempstr=NULL;
00326 int strlen;
00327 int inimgaddr;
00328 IMAGE *inimg=NULL;
00329 int outimgaddr;
00330 IMAGE *outimg=NULL;
00331 char *outname=NULL;
00332 double phi, theta, dist;
00333
00334 if( argc != 2 ) {
00335 Tcl_AppendResult(interp,"wrong # args: should be \"",
00336 argv[0], " arrayname\"", (char *) NULL);
00337 return TCL_ERROR;
00338 }
00339 array=argv[1];
00340
00341
00342
00343 tclarrayname = Tcl_NewStringObj(array,-1);
00344 tclindexname = Tcl_NewStringObj("inimg,addr",-1);
00345 if (tclobj = Tcl_ObjGetVar2(interp, tclarrayname , tclindexname , TCL_GLOBAL_ONLY | TCL_LEAVE_ERR_MSG)) {
00346 tempstr = Tcl_GetStringFromObj(tclobj,&strlen);
00347 if (strlen <= 0) return TCL_ERROR;
00348 sscanf(tempstr,"%x",&inimgaddr);
00349 inimg = (IMAGE *) inimgaddr;
00350 } else {
00351 return TCL_ERROR;
00352 }
00353 Tcl_DecrRefCount(tclarrayname);
00354 Tcl_DecrRefCount(tclindexname);
00355
00356
00357
00358 tclarrayname = Tcl_NewStringObj(array,-1);
00359 tclindexname = Tcl_NewStringObj("phi",-1);
00360 if (tclobj = Tcl_ObjGetVar2(interp, tclarrayname , tclindexname , TCL_GLOBAL_ONLY | TCL_LEAVE_ERR_MSG)) {
00361 if (Tcl_GetDoubleFromObj(interp,tclobj,&phi) == TCL_ERROR) return TCL_ERROR;
00362 } else {
00363 return TCL_ERROR;
00364 }
00365 Tcl_DecrRefCount(tclarrayname);
00366 Tcl_DecrRefCount(tclindexname);
00367
00368
00369
00370 tclarrayname = Tcl_NewStringObj(array,-1);
00371 tclindexname = Tcl_NewStringObj("theta",-1);
00372 if (tclobj = Tcl_ObjGetVar2(interp, tclarrayname , tclindexname , TCL_GLOBAL_ONLY | TCL_LEAVE_ERR_MSG)) {
00373 if (Tcl_GetDoubleFromObj(interp,tclobj,&theta) == TCL_ERROR) return TCL_ERROR;
00374 } else {
00375 return TCL_ERROR;
00376 }
00377 Tcl_DecrRefCount(tclarrayname);
00378 Tcl_DecrRefCount(tclindexname);
00379
00380
00381
00382 tclarrayname = Tcl_NewStringObj(array,-1);
00383 tclindexname = Tcl_NewStringObj("dist",-1);
00384 if (tclobj = Tcl_ObjGetVar2(interp, tclarrayname , tclindexname , TCL_GLOBAL_ONLY | TCL_LEAVE_ERR_MSG)) {
00385 if (Tcl_GetDoubleFromObj(interp,tclobj,&dist) == TCL_ERROR) return TCL_ERROR;
00386 } else {
00387 return TCL_ERROR;
00388 }
00389 Tcl_DecrRefCount(tclarrayname);
00390 Tcl_DecrRefCount(tclindexname);
00391
00392
00393
00394 tclarrayname = Tcl_NewStringObj(array,-1);
00395 tclindexname = Tcl_NewStringObj("outname",-1);
00396 if (tclobj = Tcl_ObjGetVar2(interp, tclarrayname , tclindexname , TCL_GLOBAL_ONLY | TCL_LEAVE_ERR_MSG)) {
00397 outname = Tcl_GetStringFromObj(tclobj,&strlen);
00398 if (strlen <= 0) return TCL_ERROR;
00399 } else {
00400 return TCL_ERROR;
00401 }
00402 Tcl_DecrRefCount(tclarrayname);
00403 Tcl_DecrRefCount(tclindexname);
00404
00405
00406
00407 phi = (phi * (PI/180.0));
00408 theta = (theta * (PI/180.0));
00409
00410
00411 RELIEF(inimg,phi,theta,dist,&outimg);
00412
00413
00414 if (CHECKIMG(outimg)) sprintf(outimg->text, "%s", outname);
00415 outimgaddr = (int) outimg;
00416
00417
00418 sprintf(msg, "%x", outimgaddr);
00419 Tcl_SetResult(interp, msg, TCL_VOLATILE);
00420
00421 return TCL_OK;
00422 }
00423
00424
00425
00426
00427
00428
00429
00430
00431
00432
00433
00434
00435
00436
00437
00438
00439
00440
00441
00442
00443
00444
00445
00446
00447 int Sadie_Tools_ScatterCmd(ClientData client_data, Tcl_Interp* interp, int argc, char *argv[])
00448 {
00449 Tcl_Obj* tclobj=NULL;
00450 Tcl_Obj* tclarrayname = NULL;
00451 Tcl_Obj* tclindexname = NULL;
00452 char msg[SLEN];
00453 char* array=NULL;
00454 char* tempstr=NULL;
00455 int strlen;
00456 int inimgaddr1, inimgaddr2;
00457 IMAGE *inimg1=NULL, *inimg2=NULL;
00458 int outimgaddr;
00459 IMAGE *outimg=NULL;
00460 char *outname=NULL;
00461 int band1, band2, incr, res;
00462
00463 if( argc != 2 ) {
00464 Tcl_AppendResult(interp,"wrong # args: should be \"",
00465 argv[0], " arrayname\"", (char *) NULL);
00466 return TCL_ERROR;
00467 }
00468 array=argv[1];
00469
00470
00471
00472 tclarrayname = Tcl_NewStringObj(array,-1);
00473 tclindexname = Tcl_NewStringObj("inimg,addr1",-1);
00474 if (tclobj = Tcl_ObjGetVar2(interp, tclarrayname , tclindexname , TCL_GLOBAL_ONLY | TCL_LEAVE_ERR_MSG)) {
00475 tempstr = Tcl_GetStringFromObj(tclobj,&strlen);
00476 if (strlen <= 0) return TCL_ERROR;
00477 sscanf(tempstr,"%x",&inimgaddr1);
00478 inimg1 = (IMAGE *) inimgaddr1;
00479 } else {
00480 return TCL_ERROR;
00481 }
00482 Tcl_DecrRefCount(tclarrayname);
00483 Tcl_DecrRefCount(tclindexname);
00484
00485
00486
00487 tclarrayname = Tcl_NewStringObj(array,-1);
00488 tclindexname = Tcl_NewStringObj("inimg,addr2",-1);
00489 if (tclobj = Tcl_ObjGetVar2(interp, tclarrayname , tclindexname , TCL_GLOBAL_ONLY | TCL_LEAVE_ERR_MSG)) {
00490 tempstr = Tcl_GetStringFromObj(tclobj,&strlen);
00491 if (strlen <= 0) return TCL_ERROR;
00492 sscanf(tempstr,"%x",&inimgaddr2);
00493 inimg2 = (IMAGE *) inimgaddr2;
00494 } else {
00495 return TCL_ERROR;
00496 }
00497 Tcl_DecrRefCount(tclarrayname);
00498 Tcl_DecrRefCount(tclindexname);
00499
00500
00501
00502 tclarrayname = Tcl_NewStringObj(array,-1);
00503 tclindexname = Tcl_NewStringObj("band1",-1);
00504 if (tclobj = Tcl_ObjGetVar2(interp, tclarrayname , tclindexname , TCL_GLOBAL_ONLY | TCL_LEAVE_ERR_MSG)) {
00505 if (Tcl_GetIntFromObj(interp,tclobj,&band1) == TCL_ERROR) return TCL_ERROR;
00506 } else {
00507 return TCL_ERROR;
00508 }
00509 Tcl_DecrRefCount(tclarrayname);
00510 Tcl_DecrRefCount(tclindexname);
00511
00512
00513
00514 tclarrayname = Tcl_NewStringObj(array,-1);
00515 tclindexname = Tcl_NewStringObj("band2",-1);
00516 if (tclobj = Tcl_ObjGetVar2(interp, tclarrayname , tclindexname , TCL_GLOBAL_ONLY | TCL_LEAVE_ERR_MSG)) {
00517 if (Tcl_GetIntFromObj(interp,tclobj,&band2) == TCL_ERROR) return TCL_ERROR;
00518 } else {
00519 return TCL_ERROR;
00520 }
00521 Tcl_DecrRefCount(tclarrayname);
00522 Tcl_DecrRefCount(tclindexname);
00523
00524
00525
00526 tclarrayname = Tcl_NewStringObj(array,-1);
00527 tclindexname = Tcl_NewStringObj("incr",-1);
00528 if (tclobj = Tcl_ObjGetVar2(interp, tclarrayname , tclindexname , TCL_GLOBAL_ONLY | TCL_LEAVE_ERR_MSG)) {
00529 if (Tcl_GetIntFromObj(interp,tclobj,&incr) == TCL_ERROR) return TCL_ERROR;
00530 } else {
00531 return TCL_ERROR;
00532 }
00533 Tcl_DecrRefCount(tclarrayname);
00534 Tcl_DecrRefCount(tclindexname);
00535
00536
00537
00538 tclarrayname = Tcl_NewStringObj(array,-1);
00539 tclindexname = Tcl_NewStringObj("res",-1);
00540 if (tclobj = Tcl_ObjGetVar2(interp, tclarrayname , tclindexname , TCL_GLOBAL_ONLY | TCL_LEAVE_ERR_MSG)) {
00541 if (Tcl_GetIntFromObj(interp,tclobj,&res) == TCL_ERROR) return TCL_ERROR;
00542 } else {
00543 return TCL_ERROR;
00544 }
00545 Tcl_DecrRefCount(tclarrayname);
00546 Tcl_DecrRefCount(tclindexname);
00547
00548
00549
00550 tclarrayname = Tcl_NewStringObj(array,-1);
00551 tclindexname = Tcl_NewStringObj("outname",-1);
00552 if (tclobj = Tcl_ObjGetVar2(interp, tclarrayname , tclindexname , TCL_GLOBAL_ONLY | TCL_LEAVE_ERR_MSG)) {
00553 outname = Tcl_GetStringFromObj(tclobj,&strlen);
00554 if (strlen <= 0) return TCL_ERROR;
00555 } else {
00556 return TCL_ERROR;
00557 }
00558 Tcl_DecrRefCount(tclarrayname);
00559 Tcl_DecrRefCount(tclindexname);
00560
00561
00562 band1--;
00563 band2--;
00564
00565
00566 SCATTER(inimg1,inimg2,band1,band2,incr,res,&outimg);
00567
00568
00569 if (CHECKIMG(outimg)) sprintf(outimg->text, "%s", outname);
00570 outimgaddr = (int) outimg;
00571
00572
00573 sprintf(msg, "%x", outimgaddr);
00574 Tcl_SetResult(interp, msg, TCL_VOLATILE);
00575
00576 return TCL_OK;
00577 }
00578
00579
00580
00581
00582
00583
00584
00585
00586
00587
00588
00589
00590
00591
00592
00593
00594
00595
00596
00597 int Sadie_Tools_RMSCmd(ClientData client_data, Tcl_Interp* interp, int argc, char *argv[])
00598 {
00599 Tcl_Obj* tclobj=NULL;
00600 Tcl_Obj* tclarrayname = NULL;
00601 Tcl_Obj* tclindexname = NULL;
00602 char msg[SLEN];
00603 char* array=NULL;
00604 char* tempstr=NULL;
00605 int strlen;
00606 int inimgaddr1, inimgaddr2;
00607 IMAGE *inimg1=NULL, *inimg2=NULL;
00608 double diff;
00609
00610 if( argc != 2 ) {
00611 Tcl_AppendResult(interp,"wrong # args: should be \"",
00612 argv[0], " arrayname\"", (char *) NULL);
00613 return TCL_ERROR;
00614 }
00615 array=argv[1];
00616
00617
00618
00619 tclarrayname = Tcl_NewStringObj(array,-1);
00620 tclindexname = Tcl_NewStringObj("inimg,addr1",-1);
00621 if (tclobj = Tcl_ObjGetVar2(interp, tclarrayname , tclindexname , TCL_GLOBAL_ONLY | TCL_LEAVE_ERR_MSG)) {
00622 tempstr = Tcl_GetStringFromObj(tclobj,&strlen);
00623 if (strlen <= 0) return TCL_ERROR;
00624 sscanf(tempstr,"%x",&inimgaddr1);
00625 inimg1 = (IMAGE *) inimgaddr1;
00626 } else {
00627 return TCL_ERROR;
00628 }
00629 Tcl_DecrRefCount(tclarrayname);
00630 Tcl_DecrRefCount(tclindexname);
00631
00632
00633
00634 tclarrayname = Tcl_NewStringObj(array,-1);
00635 tclindexname = Tcl_NewStringObj("inimg,addr2",-1);
00636 if (tclobj = Tcl_ObjGetVar2(interp, tclarrayname , tclindexname , TCL_GLOBAL_ONLY | TCL_LEAVE_ERR_MSG)) {
00637 tempstr = Tcl_GetStringFromObj(tclobj,&strlen);
00638 if (strlen <= 0) return TCL_ERROR;
00639 sscanf(tempstr,"%x",&inimgaddr2);
00640 inimg2 = (IMAGE *) inimgaddr2;
00641 } else {
00642 return TCL_ERROR;
00643 }
00644 Tcl_DecrRefCount(tclarrayname);
00645 Tcl_DecrRefCount(tclindexname);
00646
00647
00648 RMSDIFF(inimg1,inimg2,&diff);
00649
00650
00651 sprintf(msg, "%f",diff);
00652 Tcl_SetResult(interp, msg, TCL_VOLATILE);
00653
00654 return TCL_OK;
00655 }
00656
00657
00658
00659
00660
00661
00662
00663
00664
00665
00666
00667
00668
00669
00670
00671
00672 int Sadie_Tools_Init(Tcl_Interp *interp)
00673 {
00674 Tcl_CreateCommand(interp, "Sadie_Tools_Destripe", Sadie_Tools_DestripeCmd,(ClientData) NULL, NULL);
00675 Tcl_CreateCommand(interp, "Sadie_Tools_ContMap", Sadie_Tools_ContMapCmd,(ClientData) NULL, NULL);
00676 Tcl_CreateCommand(interp, "Sadie_Tools_Relief", Sadie_Tools_ReliefCmd,(ClientData) NULL, NULL);
00677 Tcl_CreateCommand(interp, "Sadie_Tools_Scatter", Sadie_Tools_ScatterCmd,(ClientData) NULL, NULL);
00678 Tcl_CreateCommand(interp, "Sadie_Tools_RMS", Sadie_Tools_RMSCmd,(ClientData) NULL, NULL);
00679 return TCL_OK;
00680 }
00681