VTK
/Users/kitware/Dashboards/MyTests/VTK_BLD_Release_docs/Utilities/Doxygen/dox/IO/MINC/vtkMNITransformReader.h
Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    vtkMNITransformReader.h
00005 
00006   Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
00007   All rights reserved.
00008   See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
00009 
00010      This software is distributed WITHOUT ANY WARRANTY; without even
00011      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
00012      PURPOSE.  See the above copyright notice for more information.
00013 
00014 =========================================================================*/
00015 /*=========================================================================
00016 
00017 Copyright (c) 2006 Atamai, Inc.
00018 
00019 Use, modification and redistribution of the software, in source or
00020 binary forms, are permitted provided that the following terms and
00021 conditions are met:
00022 
00023 1) Redistribution of the source code, in verbatim or modified
00024    form, must retain the above copyright notice, this license,
00025    the following disclaimer, and any notices that refer to this
00026    license and/or the following disclaimer.
00027 
00028 2) Redistribution in binary form must include the above copyright
00029    notice, a copy of this license and the following disclaimer
00030    in the documentation or with other materials provided with the
00031    distribution.
00032 
00033 3) Modified copies of the source code must be clearly marked as such,
00034    and must not be misrepresented as verbatim copies of the source code.
00035 
00036 THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE SOFTWARE "AS IS"
00037 WITHOUT EXPRESSED OR IMPLIED WARRANTY INCLUDING, BUT NOT LIMITED TO,
00038 THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
00039 PURPOSE.  IN NO EVENT SHALL ANY COPYRIGHT HOLDER OR OTHER PARTY WHO MAY
00040 MODIFY AND/OR REDISTRIBUTE THE SOFTWARE UNDER THE TERMS OF THIS LICENSE
00041 BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL OR CONSEQUENTIAL DAMAGES
00042 (INCLUDING, BUT NOT LIMITED TO, LOSS OF DATA OR DATA BECOMING INACCURATE
00043 OR LOSS OF PROFIT OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF
00044 THE USE OR INABILITY TO USE THE SOFTWARE, EVEN IF ADVISED OF THE
00045 POSSIBILITY OF SUCH DAMAGES.
00046 
00047 =========================================================================*/
00066 #ifndef vtkMNITransformReader_h
00067 #define vtkMNITransformReader_h
00068 
00069 #include "vtkIOMINCModule.h" // For export macro
00070 #include "vtkAlgorithm.h"
00071 
00072 class vtkAbstractTransform;
00073 class vtkDoubleArray;
00074 class vtkCollection;
00075 
00076 class VTKIOMINC_EXPORT vtkMNITransformReader : public vtkAlgorithm
00077 {
00078 public:
00079   vtkTypeMacro(vtkMNITransformReader,vtkAlgorithm);
00080 
00081   static vtkMNITransformReader *New();
00082   virtual void PrintSelf(ostream& os, vtkIndent indent);
00083 
00085 
00086   vtkSetStringMacro(FileName);
00087   vtkGetStringMacro(FileName);
00089 
00091 
00092   virtual const char* GetFileExtensions() {
00093     return ".xfm"; }
00095 
00097 
00098   virtual const char* GetDescriptiveName() {
00099     return "MNI Transform"; }
00101 
00103   virtual int CanReadFile(const char* name);
00104 
00106   virtual int GetNumberOfTransforms();
00107 
00109   virtual vtkAbstractTransform *GetNthTransform(int i);
00110 
00114   virtual vtkAbstractTransform *GetTransform();
00115 
00117   virtual const char *GetComments();
00118 
00119 protected:
00120   vtkMNITransformReader();
00121   ~vtkMNITransformReader();
00122 
00123   char *FileName;
00124   vtkAbstractTransform *Transform;
00125   vtkCollection *Transforms;
00126   int LineNumber;
00127   char *Comments;
00128 
00129   void SetTransform(vtkAbstractTransform *transform);
00130 
00131   int ReadLine(istream &infile, char result[256]);
00132   int ReadLineAfterComments(istream &infile, char result[256]);
00133   int SkipWhitespace(istream &infile, char linetext[256], char **cpp);
00134   int ParseLeftHandSide(istream &infile, char linetext[256], char **cpp,
00135                         char identifier[256]);
00136   int ParseStringValue(istream &infile, char linetext[256], char **cpp,
00137                        char data[256]);
00138   int ParseFloatValues(istream &infile, char linetext[256], char **cpp,
00139                        vtkDoubleArray *array);
00140   int ParseInvertFlagValue(istream &infile, char linetext[256], char **cpp,
00141                            int *invertFlag);
00142 
00143   int ReadLinearTransform(istream &infile, char linetext[256], char **cp);
00144   int ReadThinPlateSplineTransform(istream &infile, char linetext[256],
00145                                    char **cp);
00146   int ReadGridTransform(istream &infile, char linetext[256], char **cp);
00147 
00148   virtual int ReadNextTransform(istream &infile, char linetext[256]);
00149 
00150   virtual int ReadFile();
00151 
00152   virtual int ProcessRequest(vtkInformation* request,
00153                              vtkInformationVector** inInfo,
00154                              vtkInformationVector* outInfo);
00155 
00156 private:
00157   vtkMNITransformReader(const vtkMNITransformReader&); // Not implemented
00158   void operator=(const vtkMNITransformReader&);  // Not implemented
00159 
00160 };
00161 
00162 #endif