Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Related Pages  

Common/vtkFloatArray.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    $RCSfile: vtkFloatArray.h,v $
00005   Language:  C++
00006 
00007 
00008 Copyright (c) 1993-2001 Ken Martin, Will Schroeder, Bill Lorensen 
00009 All rights reserved.
00010 
00011 Redistribution and use in source and binary forms, with or without
00012 modification, are permitted provided that the following conditions are met:
00013 
00014  * Redistributions of source code must retain the above copyright notice,
00015    this list of conditions and the following disclaimer.
00016 
00017  * Redistributions in binary form must reproduce the above copyright notice,
00018    this list of conditions and the following disclaimer in the documentation
00019    and/or other materials provided with the distribution.
00020 
00021  * Neither name of Ken Martin, Will Schroeder, or Bill Lorensen nor the names
00022    of any contributors may be used to endorse or promote products derived
00023    from this software without specific prior written permission.
00024 
00025  * Modified source versions must be plainly marked as such, and must not be
00026    misrepresented as being the original software.
00027 
00028 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
00029 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00030 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
00031 ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
00032 ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
00033 DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
00034 SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
00035 CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
00036 OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
00037 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00038 
00039 =========================================================================*/
00057 #ifndef __vtkFloatArray_h
00058 #define __vtkFloatArray_h
00059 
00060 #include "vtkDataArray.h"
00061 
00062 class VTK_COMMON_EXPORT vtkFloatArray : public vtkDataArray
00063 {
00064 public:
00065   static vtkFloatArray *New();
00066   vtkTypeMacro(vtkFloatArray,vtkDataArray);
00067   void PrintSelf(ostream& os, vtkIndent indent);
00068 
00071   int Allocate(const vtkIdType sz, const vtkIdType ext=1000);
00072 
00074   void Initialize();
00075 
00077   vtkDataArray *MakeObject();
00078 
00080 
00081   int GetDataType() 
00082     {return VTK_FLOAT;}
00084 
00086   void SetNumberOfTuples(const vtkIdType number);
00087 
00089   float *GetTuple(const vtkIdType i);
00090 
00092 
00093   void GetTuple(const vtkIdType i, float * tuple);
00094   void GetTuple(const vtkIdType i, double * tuple);
00096 
00098 
00099   void SetTuple(const vtkIdType i, const float * tuple);
00100   void SetTuple(const vtkIdType i, const double * tuple);
00102 
00104 
00106   void InsertTuple(const vtkIdType i, const float * tuple);
00107   void InsertTuple(const vtkIdType i, const double * tuple);
00109 
00111 
00113   vtkIdType InsertNextTuple(const float * tuple);
00114   vtkIdType InsertNextTuple(const double * tuple);
00116 
00118   void Squeeze() {this->ResizeAndExtend(this->MaxId+1);};
00119 
00121   virtual void Resize(vtkIdType numTuples);
00122 
00126   float GetComponent(const vtkIdType i, const int j);
00127 
00132   void SetComponent(const vtkIdType i, const int j, const float c);
00133 
00137   void InsertComponent(const vtkIdType i, const int j, const float c);
00138 
00140 
00141   float GetValue(const vtkIdType id) 
00142     {return this->Array[id];}
00144 
00146 
00148   void SetValue(const vtkIdType id, const float value) 
00149     {this->Array[id] = value;}
00151 
00155   void SetNumberOfValues(const vtkIdType number);
00156 
00158   void InsertValue(const vtkIdType id, const float f);
00159 
00162   vtkIdType InsertNextValue(const float f);
00163 
00167   float *WritePointer(const vtkIdType id, const vtkIdType number);
00168 
00170 
00172   void *GetVoidPointer(const vtkIdType id) 
00173     {return (void *)this->GetPointer(id);}
00174   float *GetPointer(const vtkIdType id) 
00175     {return this->Array + id;}
00177 
00179   void DeepCopy(vtkDataArray *fa);
00180 
00182 
00188   void SetArray(float* array, vtkIdType size, int save);
00189   void SetVoidArray(void *array, vtkIdType size, int save) 
00190     {this->SetArray((float*)array, size, save);}
00192 
00193   
00194 protected:
00195   vtkFloatArray(vtkIdType numComp=1);
00196   ~vtkFloatArray();
00197 
00198   float *Array;  // pointer to data
00199   float *ResizeAndExtend(const vtkIdType sz);  // function to reallocate data
00200 
00201   int SaveUserArray;
00202 private:
00203   vtkFloatArray(const vtkFloatArray&);  // Not implemented.
00204   void operator=(const vtkFloatArray&);  // Not implemented.
00205 };
00206 
00207 inline void vtkFloatArray::SetNumberOfValues(const vtkIdType number) 
00208 {
00209   this->Allocate(number);
00210   this->MaxId = number - 1;
00211 }
00212 
00213 
00214 inline float *vtkFloatArray::WritePointer(const vtkIdType id,
00215                                           const vtkIdType number) 
00216 {
00217   vtkIdType newSize=id+number;
00218   if ( newSize > this->Size )
00219     {
00220     this->ResizeAndExtend(newSize);
00221     }
00222   if ( (--newSize) > this->MaxId )
00223     {
00224     this->MaxId = newSize;
00225     }
00226   return this->Array + id;
00227 }
00228 
00229 inline void vtkFloatArray::InsertValue(const vtkIdType id, const float f)
00230 {
00231   if ( id >= this->Size )
00232     {
00233     this->ResizeAndExtend(id+1);
00234     }
00235   this->Array[id] = f;
00236   if ( id > this->MaxId )
00237     {
00238     this->MaxId = id;
00239     }
00240 }
00241 
00242 inline vtkIdType vtkFloatArray::InsertNextValue(const float f)
00243 {
00244   this->InsertValue (++this->MaxId,f); 
00245   return this->MaxId;
00246 }
00247 
00248 #endif

Generated on Thu Mar 28 14:19:15 2002 for VTK by doxygen1.2.11.1 written by Dimitri van Heesch, © 1997-2001