Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00030 #ifndef __vtkKWEPaintbrushLabelData_h
00031 #define __vtkKWEPaintbrushLabelData_h
00032
00033 #include "vtkKWEPaintbrushData.h"
00034 #include <vtkstd/set>
00035
00036 class vtkImageData;
00037 class vtkKWEPaintbrushSketch;
00038
00039 class VTKEdge_WIDGETS_EXPORT vtkKWEPaintbrushLabelData
00040 : public vtkKWEPaintbrushData
00041 {
00042
00043 friend class vtkKWEPaintbrushSketch;
00044
00045 public:
00046 static vtkKWEPaintbrushLabelData *New();
00047 vtkTypeRevisionMacro(vtkKWEPaintbrushLabelData, vtkKWEPaintbrushData);
00048 void PrintSelf(ostream& os, vtkIndent indent);
00049
00050 void DeepCopy(vtkDataObject *o);
00051 void ShallowCopy(vtkDataObject *f);
00052
00054
00056 virtual void SetLabelMap( vtkImageData * );
00057 vtkGetObjectMacro( LabelMap, vtkImageData );
00059
00061
00063 virtual int Add( vtkKWEPaintbrushData *, bool forceMutable=false );
00064 virtual int Subtract( vtkKWEPaintbrushData *, bool forceMutable=false );
00065 virtual int Replace( vtkKWEPaintbrushData *, bool forceMutable=false );
00067
00069 virtual int Clip( int extent[6] );
00070
00073 virtual void Allocate(double fillValue = vtkKWEPaintbrushLabelData::NoLabelValue);
00074
00076
00077 virtual void SetSpacing( double spacing[3] );
00078 virtual void GetSpacing( double spacing[3] );
00080
00082
00083 virtual void SetOrigin( double origin[3] );
00084 virtual void GetOrigin( double origin[3] );
00086
00088
00089 virtual void SetExtent(int extent[6]);
00090 virtual void SetExtent(int x1, int x2, int y1, int y2, int z1, int z2);
00091 virtual void GetExtent(int extent[6]);
00093
00096 virtual int IsInside( double p[3] );
00097
00101 virtual void GetPaintbrushDataAsImageData( vtkImageData * );
00102
00104 virtual unsigned long GetMTime();
00105
00107
00109 virtual void CopyInformationToPipeline(vtkInformation* request,
00110 vtkInformation* input,
00111 vtkInformation* output,
00112 int forceCopy);
00113 virtual void CopyInformationFromPipeline(vtkInformation* request);
00115
00116
00118
00120 static vtkKWEPaintbrushLabelData* GetData(vtkInformation* info);
00121 static vtkKWEPaintbrushLabelData* GetData(vtkInformationVector* v, int i=0);
00122
00124
00126 virtual void Initialize();
00127
00130 virtual void Clear( vtkKWEPaintbrushEnums::LabelType label );
00131
00133
00135 static void SetNoLabelValue( vtkKWEPaintbrushEnums::LabelType label );
00136 static vtkKWEPaintbrushEnums::LabelType NoLabelValue;
00138
00139
00141
00143 typedef vtkstd::set< vtkKWEPaintbrushEnums::LabelType > LabelSetType;
00144 LabelSetType GetLabels();
00145
00147
00151 virtual void RelabelDataToContiguousLabels();
00152
00153 protected:
00154 vtkKWEPaintbrushLabelData();
00155 ~vtkKWEPaintbrushLabelData();
00156
00158 void CopyOriginAndSpacingFromPipeline();
00159
00161 vtkImageData *LabelMap;
00162
00163 private:
00164 vtkKWEPaintbrushLabelData(const vtkKWEPaintbrushLabelData&);
00165 void operator=(const vtkKWEPaintbrushLabelData&);
00166
00169 void SetMutable( int isMutable, vtkKWEPaintbrushEnums::LabelType label );
00170
00171
00172
00173
00174 LabelSetType ImmutableLabels;
00175
00176 };
00177
00178 #endif
00179
00180