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

Sadie_FileIO.c

Go to the documentation of this file.
00001 
00015 /* This file is part of tclSadie.
00016 
00017    tclSadie is free software; you can redistribute it and/or modify it
00018    under the terms of the GNU General Public License as published by
00019    the Free Software Foundation; either version 2 of the License, or
00020    (at your option) any later version.
00021 
00022    tclSadie is distributed in the hope that it will be useful, but
00023    WITHOUT ANY WARRANTY; without even the implied warranty of
00024    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00025    General Public License for more details.
00026 
00027    You should have received a copy of the GNU General Public License
00028    along with tclSadie; if not, write to the Free Software Foundation,
00029    Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.  */
00030 
00031 #if HAVE_CONFIG_H
00032 #include <config.h>
00033 #endif /* HAVE_CONFIG_H */
00034 #include <tcl.h>
00035 #include <tk.h>
00036 #include <stdio.h>
00037 #include <string.h>
00038 #include <math.h>
00039 #include <sadie.h>
00040 #include "tclsadie.h"
00041 
00060 int
00061 Sadie_FileIO_OpenCmd (ClientData client_data, Tcl_Interp* interp,
00062                       int objc, Tcl_Obj * const objv[])
00063 {
00064   IMAGE *theimg = NULL;
00065   uint64_t filesize;
00066 
00067   if (objc != 4)
00068     {
00069       Tcl_WrongNumArgs (interp, 1, objv, "filename filesize title");
00070       return TCL_ERROR;
00071     }
00072   /* Read the size of the file */
00073   if (GetSadieUint64FromObj (interp, objv[2], &filesize) != TCL_OK)
00074     return TCL_ERROR;
00075   DISK2IMG (Tcl_GetString (objv[1]), 0, filesize, &theimg);
00076   return SetSadieNamedImageResult (interp, theimg, objv[3]);
00077 }
00078 
00083 int
00084 Sadie_FileIO_OpenTIFFCmd (ClientData client_data, Tcl_Interp* interp,
00085                           int objc, Tcl_Obj * const objv[])
00086 {
00087   IMAGE *theimg = NULL;
00088   
00089   if (objc != 3)
00090     {
00091       Tcl_WrongNumArgs (interp, 1, objv, "filename title");
00092       return TCL_ERROR;
00093     }
00094   /* TIFF2IMG (Tcl_GetString (objv[1]), 0, &theimg); */
00095   return SetSadieNamedImageResult (interp, theimg, objv[2]);
00096 }
00097 
00102 int
00103 Sadie_FileIO_OpenPNMCmd (ClientData client_data, Tcl_Interp* interp,
00104                          int objc, Tcl_Obj * const objv[])
00105 {
00106   IMAGE *theimg = NULL;
00107 
00108   if (objc != 3)
00109     {
00110       Tcl_WrongNumArgs (interp, 1, objv, "filename title");
00111       return TCL_ERROR;
00112     }
00113   /* PNM2IMG (argv[1],&theimg); */
00114   return SetSadieNamedImageResult (interp, theimg, objv[2]);
00115 }
00116 
00151 int
00152 Sadie_FileIO_ImportCmd (ClientData client_data, Tcl_Interp* interp,
00153                         int objc, Tcl_Obj * const objv[])
00154 {
00155   int option;
00156   uint64_t filesize;
00157   uint64_t hdrsize;
00158   uint32_t nbnd, nlin, npix, nbit;
00159   int subsamp;
00160   uint32_t fromband, toband, incrband;
00161   uint32_t fromline, toline, incrline;
00162   uint32_t frompixel, topixel, incrpixel;
00163   IMAGE *theimg = NULL;
00164 
00165   if (objc < 19)
00166     {
00167       Tcl_WrongNumArgs (interp, 1, objv, 
00168                         "name hdrsize nbnd nlin npix nbit option subsamp fromband toband incrband fromline toline incrline frompixel topixel incrpixel filesize");
00169       return TCL_ERROR;
00170     }
00171   if ((GetSadieUint64FromObj (interp, objv[2], &hdrsize) != TCL_OK)
00172       || (GetSadieUintFromObj (interp, objv[3], &nbnd) != TCL_OK)
00173       || (GetSadieUintFromObj (interp, objv[4], &nlin) != TCL_OK)
00174       || (GetSadieUintFromObj (interp, objv[5], &npix) != TCL_OK)
00175       || (GetSadieUintFromObj (interp, objv[6], &nbit) != TCL_OK)
00176       || (Tcl_GetIntFromObj (interp, objv[7], &option) != TCL_OK)
00177       || (Tcl_GetBooleanFromObj (interp, objv[8], &subsamp) != TCL_OK))
00178     return TCL_ERROR;
00179   if (subsamp)
00180     {
00181       if ((GetSadieUintFromObj (interp, objv[9], &fromband) != TCL_OK)
00182           || (GetSadieUintFromObj (interp, objv[10], &toband) != TCL_OK)
00183           || (GetSadieUintFromObj (interp, objv[11], &incrband) != TCL_OK)
00184           || (GetSadieUintFromObj (interp, objv[12], &fromline) != TCL_OK)
00185           || (GetSadieUintFromObj (interp, objv[13], &toline) != TCL_OK)
00186           || (GetSadieUintFromObj (interp, objv[14], &incrline) != TCL_OK)
00187           || (GetSadieUintFromObj (interp, objv[15], &frompixel) != TCL_OK)
00188           || (GetSadieUintFromObj (interp, objv[16], &topixel) != TCL_OK)
00189           || (GetSadieUintFromObj (interp, objv[17], &incrpixel) != TCL_OK))
00190         return TCL_ERROR;
00191       if (fromband > 0)
00192         fromband--;
00193       if (toband > 0)
00194         toband--;
00195       if (fromline > 0)
00196         fromline--;
00197       if (toline > 0)
00198         toline--;
00199       if (frompixel > 0)
00200         frompixel--;
00201       if (topixel > 0)
00202         topixel--;
00203     }
00204   else
00205     {
00206       fromband = 0;
00207       fromline = 0;
00208       frompixel = 0;
00209       toband = nbnd-1;
00210       toline = nlin-1;
00211       topixel = npix-1;
00212       incrband = 1;
00213       incrline = 1;
00214       incrpixel = 1;
00215     }
00216   if (GetSadieUint64FromObj (interp, objv[18], &filesize) != TCL_OK)
00217     return TCL_ERROR;
00218   IMPORT (Tcl_GetString (objv[1]), 0, (short)option, filesize, hdrsize,
00219           nbnd, nlin, npix, nbit, fromband, fromline, frompixel,
00220           incrband, incrline, incrpixel, toband, toline, topixel, &theimg);
00221   return SetSadieNamedImageResult (interp, theimg, objv[1]);
00222 }
00223 
00243 int
00244 Sadie_FileIO_SaveCmd(ClientData client_data, Tcl_Interp* interp,
00245                      int objc, Tcl_Obj * const objv[])
00246 {
00247   IMAGE *theimg = NULL;
00248   uint32_t bitsperpix;
00249 
00250   if (objc != 4)
00251     {
00252       Tcl_WrongNumArgs (interp, 1, objv,
00253                         "image_ID filename bitsperpixel");
00254       return TCL_ERROR;
00255     }
00256   if ((GetSadieImageFromObj (objv[1], &theimg) != TCL_OK)
00257       || (GetSadieUintFromObj (interp, objv[3], &bitsperpix) != TCL_OK))
00258     return TCL_ERROR;
00259   IMG2DISK (theimg, Tcl_GetString (objv[2]), bitsperpix, 0, 0);
00260   return TCL_OK;
00261 }
00262 
00280 int
00281 Sadie_FileIO_SaveEPSCmd (ClientData client_data, Tcl_Interp* interp,
00282                          int objc, Tcl_Obj * const objv[])
00283 {
00284   IMAGE *theimg = NULL;
00285   uint32_t bitsperpix;
00286 
00287   if (objc != 4)
00288     {
00289       Tcl_WrongNumArgs (interp, 1, objv, "image_ID filename bitsperpixel");
00290       return TCL_ERROR;
00291     }
00292   if ((GetSadieImageFromObj (objv[1], &theimg) != TCL_OK)
00293       || (GetSadieUintFromObj (interp, objv[3], &bitsperpix) != TCL_OK))
00294     return TCL_ERROR;
00295   IMG2EPSF (theimg, Tcl_GetString (objv[2]), bitsperpix, 0, 0);
00296   return TCL_OK;
00297 }
00298 
00317 int
00318 Sadie_FileIO_SaveTIFFCmd (ClientData client_data, Tcl_Interp* interp,
00319                           int objc, Tcl_Obj * const objv[])
00320 {
00321   IMAGE *theimg = NULL;
00322   uint32_t bitsperpix;
00323 
00324   if (objc != 4)
00325     {
00326       Tcl_WrongNumArgs (interp, 1, objv, "image_ID filename bitsperpixel");
00327       return TCL_ERROR;
00328     }
00329   if ((GetSadieImageFromObj (objv[1], &theimg) != TCL_OK)
00330       || (GetSadieUintFromObj (interp, objv[3], &bitsperpix) != TCL_OK))
00331     return TCL_ERROR;
00332   IMG2TIFF (theimg, Tcl_GetString (objv[2]), bitsperpix, 0, 0);
00333   return TCL_OK;
00334 }
00335 
00340 int
00341 Sadie_FileIO_SavePNMCmd (ClientData client_data, Tcl_Interp* interp,
00342                          int objc, Tcl_Obj * const objv[])
00343 {
00344   IMAGE *theimg = NULL;
00345 
00346   if (objc != 3)
00347     {
00348       Tcl_WrongNumArgs (interp, 1, objv, "image_ID filename");
00349       return TCL_ERROR;
00350     }
00351   if (GetSadieImageFromObj (objv[1], &theimg) != TCL_OK)
00352     return TCL_ERROR;
00353   /* IMG2PNM (theimg, Tcl_GetString (objv[2])); */
00354   return TCL_OK;
00355 }
00356 
00373 int
00374 Sadie_FileIO_SaveTEXTCmd (ClientData client_data, Tcl_Interp* interp,
00375                           int objc, Tcl_Obj * const objv[])
00376 {
00377   IMAGE *theimg = NULL;
00378 
00379   if (objc != 3)
00380     {
00381       Tcl_WrongNumArgs (interp, 1, objv, "image_ID filename");
00382       return TCL_ERROR;
00383     }
00384   if (GetSadieImageFromObj (objv[1], &theimg) != TCL_OK)
00385     return TCL_ERROR;
00386   IMG2TEXT (theimg, Tcl_GetString (objv[2]), 0, 0);
00387   return TCL_OK;
00388 }
00389 
00396 int
00397 Sadie_FileIO_Init (Tcl_Interp *interp) {
00398   Tcl_CreateObjCommand (interp, "Sadie_FileIO_Open",
00399                         Sadie_FileIO_OpenCmd, NULL, NULL);
00400   Tcl_CreateObjCommand (interp, "Sadie_FileIO_OpenTIFF",
00401                         Sadie_FileIO_OpenTIFFCmd, NULL, NULL);
00402   Tcl_CreateObjCommand (interp, "Sadie_FileIO_OpenPNM",
00403                         Sadie_FileIO_OpenPNMCmd, NULL, NULL);
00404   Tcl_CreateObjCommand (interp, "Sadie_FileIO_Import",
00405                         Sadie_FileIO_ImportCmd, NULL, NULL);
00406   Tcl_CreateObjCommand (interp, "Sadie_FileIO_Save",
00407                         Sadie_FileIO_SaveCmd, NULL, NULL);
00408   Tcl_CreateObjCommand (interp, "Sadie_FileIO_SaveEPS",
00409                         Sadie_FileIO_SaveEPSCmd, NULL, NULL);
00410   Tcl_CreateObjCommand (interp, "Sadie_FileIO_SaveTIFF",
00411                         Sadie_FileIO_SaveTIFFCmd, NULL, NULL);
00412   Tcl_CreateObjCommand (interp, "Sadie_FileIO_SavePNM",
00413                         Sadie_FileIO_SavePNMCmd, NULL, NULL);
00414   Tcl_CreateObjCommand (interp, "Sadie_FileIO_SaveTEXT",
00415                         Sadie_FileIO_SaveTEXTCmd, NULL, NULL);
00416   return TCL_OK;
00417 }

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