Main Page | Data Structures | Directories | File List | Data Fields | Globals

Sadie_Tools.c

Go to the documentation of this file.
00001 
00011 /* This file is part of tclSadie.
00012 
00013    tclSadie is free software; you can redistribute it and/or modify it
00014    under the terms of the GNU General Public License as published by
00015    the Free Software Foundation; either version 2 of the License, or
00016    (at your option) any later version.
00017 
00018    tclSadie is distributed in the hope that it will be useful, but
00019    WITHOUT ANY WARRANTY; without even the implied warranty of
00020    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00021    General Public License for more details.
00022 
00023    You should have received a copy of the GNU General Public License
00024    along with tclSadie; if not, write to the Free Software Foundation,
00025    Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.  */
00026 
00027 #if HAVE_CONFIG_H
00028 #include <config.h>
00029 #endif /* HAVE_CONFIG_H */
00030 #include <tcl.h>
00031 #include <tk.h>
00032 #include <stdio.h>
00033 #include <string.h>
00034 #include <math.h>
00035 #include <sadie.h>
00036 #include "tclsadie.h"
00037 
00042 static const char atitle[] = DEFAULT_TCL_ARRAY_TITLE;
00043 static const char ixaddr[] = DEFAULT_IN_IMAGE_ADDR_INDEX;
00044 static const char ixname[] = DEFAULT_OUT_IMAGE_NAME_INDEX;
00078 int
00079 Sadie_Tools_DestripeCmd (ClientData client_data, Tcl_Interp *interp,
00080                          int objc, Tcl_Obj * const objv[])
00081 {
00082   IMAGE *inimg = NULL;
00083   IMAGE *outimg = NULL;
00084   int option, reference, period, detector, number;
00085 
00086   if (objc != 2)
00087     {
00088       Tcl_WrongNumArgs (interp, 1, objv, atitle);
00089       return TCL_ERROR;
00090     }
00091   if ((GetSadieImageFromObj2 (interp, objv[1], ixaddr, &inimg)
00092        != TCL_OK)
00093       || (GetSadieIntFromObj2 (interp, objv[1], "option", &option)
00094           != TCL_OK)
00095       || (GetSadieIntFromObj2 (interp, objv[1], "reference", &reference)
00096           != TCL_OK)
00097       || (GetSadieIntFromObj2 (interp, objv[1], "period", &period)
00098           != TCL_OK)
00099       || (GetSadieIntFromObj2 (interp, objv[1], "detector", &detector)
00100           != TCL_OK)
00101       || (GetSadieIntFromObj2 (interp, objv[1], "number", &number)
00102           != TCL_OK))
00103     return TCL_ERROR;
00104   DESTRIPE (inimg, (short)option, (short)reference, (short)period,
00105             (short)detector, (short)number, &outimg);
00106   return SetSadieImageObj2 (interp, objv[1], ixname, outimg);
00107 }
00108 
00126 int
00127 Sadie_Tools_ContMapCmd (ClientData client_data, Tcl_Interp *interp,
00128                         int objc, Tcl_Obj * const objv[])
00129 {
00130   IMAGE *inimg = NULL;
00131   IMAGE *outimg = NULL;
00132   int number;
00133   double width;
00134 
00135   if (objc != 2)
00136     {
00137       Tcl_WrongNumArgs (interp, 1, objv, atitle);
00138       return TCL_ERROR;
00139     }
00140   if ((GetSadieImageFromObj2 (interp, objv[1], ixaddr, &inimg)
00141        != TCL_OK)
00142       || (GetSadieIntFromObj2 (interp, objv[1], "number", &number)
00143           != TCL_OK)
00144       || (GetSadieDoubleFromObj2 (interp, objv[1], "width", &width)
00145           != TCL_OK))
00146     return TCL_ERROR;
00147   CONTOUR (inimg, (short)number, width, &outimg);
00148   return SetSadieImageObj2 (interp, objv[1], ixname, outimg);
00149 }
00150 
00172 int
00173 Sadie_Tools_ReliefCmd (ClientData client_data, Tcl_Interp *interp,
00174                        int objc, Tcl_Obj * const objv[])
00175 {
00176   IMAGE *inimg = NULL;
00177   IMAGE *outimg = NULL;
00178   double phi, theta, dist;
00179   
00180   if (objc != 2)
00181     {
00182       Tcl_WrongNumArgs (interp, 1, objv, atitle);
00183       return TCL_ERROR;
00184     }
00185   if ((GetSadieImageFromObj2 (interp, objv[1], ixaddr, &inimg)
00186        != TCL_OK)
00187       || (GetSadieDoubleFromObj2 (interp, objv[1], "phi", &phi)
00188           != TCL_OK)
00189       || (GetSadieDoubleFromObj2 (interp, objv[1], "theta", &theta)
00190           != TCL_OK)
00191       || (GetSadieDoubleFromObj2 (interp, objv[1], "dist", &dist)
00192           != TCL_OK))
00193     return TCL_ERROR;
00194   phi *= (PI / 180);
00195   theta *= (PI / 180);
00196   RELIEF (inimg, phi, theta, dist, &outimg);
00197   return SetSadieImageObj2 (interp, objv[1], ixname, outimg);
00198 }
00199 
00220 int
00221 Sadie_Tools_ScatterCmd (ClientData client_data, Tcl_Interp *interp,
00222                         int objc, Tcl_Obj * const objv[])
00223 {
00224   IMAGE *inimg1 = NULL;
00225   IMAGE *inimg2 = NULL;
00226   IMAGE *outimg = NULL;
00227   uint32_t band1, band2, incr, res;
00228 
00229   if (objc != 2)
00230     {
00231       Tcl_WrongNumArgs (interp, 1, objv, atitle);
00232       return TCL_ERROR;
00233     }
00234   if ((GetSadieImageFromObj2 (interp, objv[1], "inimg,addr1", &inimg1)
00235        != TCL_OK)
00236       || (GetSadieImageFromObj2 (interp, objv[1], "inimg,addr2", &inimg2)
00237           != TCL_OK)
00238       || (GetSadieUintFromObj2 (interp, objv[1], "band1", &band1)
00239           != TCL_OK)
00240       || (GetSadieUintFromObj2 (interp, objv[1], "band2", &band2)
00241           != TCL_OK)
00242       || (GetSadieUintFromObj2 (interp, objv[1], "incr", &incr)
00243           != TCL_OK)
00244       || (GetSadieUintFromObj2 (interp, objv[1], "res", &res)
00245           != TCL_OK))
00246     return TCL_ERROR;
00247   SCATTER (inimg1, inimg2, --band1, --band2, incr, res, &outimg);
00248   return SetSadieImageObj2 (interp, objv[1], ixname, outimg);
00249 }
00250 
00265 int
00266 Sadie_Tools_RMSCmd (ClientData client_data, Tcl_Interp *interp,
00267                     int objc, Tcl_Obj * const objv[])
00268 {
00269   IMAGE *inimg1 = NULL;
00270   IMAGE *inimg2 = NULL;
00271   double diff;
00272 
00273   if (objc != 2)
00274     {
00275       Tcl_WrongNumArgs (interp, 1, objv, atitle);
00276       return TCL_ERROR;
00277     }
00278   if ((GetSadieImageFromObj2 (interp, objv[1], "inimg,addr1", &inimg1)
00279        != TCL_OK)
00280       || (GetSadieImageFromObj2 (interp, objv[1], "inimg,addr2", &inimg2)
00281           != TCL_OK))
00282     return TCL_ERROR;
00283   RMSDIFF (inimg1, inimg2, &diff);
00284   Tcl_SetObjResult (interp, Tcl_NewDoubleObj (diff));
00285   return TCL_OK;
00286 }
00287 
00294 int
00295 Sadie_Tools_Init (Tcl_Interp *interp)
00296 {
00297   Tcl_CreateObjCommand (interp, "Sadie_Tools_Destripe",
00298                         Sadie_Tools_DestripeCmd, NULL, NULL);
00299   Tcl_CreateObjCommand (interp, "Sadie_Tools_ContMap",
00300                         Sadie_Tools_ContMapCmd, NULL, NULL);
00301   Tcl_CreateObjCommand (interp, "Sadie_Tools_Relief",
00302                         Sadie_Tools_ReliefCmd, NULL, NULL);
00303   Tcl_CreateObjCommand (interp, "Sadie_Tools_Scatter",
00304                         Sadie_Tools_ScatterCmd, NULL, NULL);
00305   Tcl_CreateObjCommand (interp, "Sadie_Tools_RMS",
00306                         Sadie_Tools_RMSCmd, NULL, NULL);
00307   return TCL_OK;
00308 }
00309 

Generated on Fri Jul 8 14:55:01 2005 for tclSadie by  doxygen 1.4.2