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
00032 #ifndef __vtkKWEPaintbrushDrawing_h
00033 #define __vtkKWEPaintbrushDrawing_h
00034
00035 #include "VTKEdgeConfigure.h"
00036 #include "vtkCollection.h"
00037 #include "vtkDataObject.h"
00038 #include "vtkKWEPaintbrushSketch.h"
00039 #include "vtkImageData.h"
00040
00041 class vtkKWEPaintbrushOperation;
00042 class vtkKWEPaintbrushPropertyManager;
00043 class vtkKWEPaintbrushLabelData;
00044 class vtkKWEPaintbrushWidget;
00045
00046 class VTKEdge_WIDGETS_EXPORT vtkKWEPaintbrushDrawing : public vtkDataObject
00047 {
00048
00049 friend class vtkKWEPaintbrushSketch;
00050 friend class vtkKWEPaintbrushRepresentation;
00051
00052 public:
00053 static vtkKWEPaintbrushDrawing *New();
00054 vtkTypeRevisionMacro(vtkKWEPaintbrushDrawing,vtkDataObject);
00055 virtual void PrintSelf(ostream& os, vtkIndent indent);
00056
00058 void AddItem(vtkKWEPaintbrushSketch *a);
00059
00062 vtkKWEPaintbrushSketch * AddItem();
00063
00065 void RemoveAllItems();
00066
00068 int RemoveItem( vtkKWEPaintbrushSketch * );
00069
00071 vtkKWEPaintbrushSketch *GetItem(int i);
00072
00076 vtkKWEPaintbrushSketch *GetItemWithLabel( vtkKWEPaintbrushEnums::LabelType );
00077
00078
00079 int IsItemPresent( vtkKWEPaintbrushSketch * s );
00080
00082
00083 void SetImageData( vtkImageData * );
00084 vtkGetObjectMacro( ImageData, vtkImageData );
00086
00088
00091 vtkSetObjectMacro( LabelMap, vtkImageData );
00092 vtkGetObjectMacro( LabelMap, vtkImageData );
00094
00099 void SetPaintbrushData( vtkKWEPaintbrushLabelData * );
00100
00102
00104 vtkGetObjectMacro( PaintbrushData, vtkKWEPaintbrushData );
00106
00108 void InitializeData();
00109
00119 void InitializeSketches();
00120
00128 void CreateSketches();
00129
00131
00132 void SetPaintbrushOperation( vtkKWEPaintbrushOperation * );
00133 vtkGetObjectMacro( PaintbrushOperation, vtkKWEPaintbrushOperation );
00135
00137
00142 virtual int AddNewStroke( int n,
00143 int type = vtkKWEPaintbrushEnums::Draw,
00144 vtkKWEPaintbrushData *initialization = NULL);
00146
00147
00149
00150 static vtkKWEPaintbrushDrawing* GetData(vtkInformation* info);
00151 static vtkKWEPaintbrushDrawing* GetData(vtkInformationVector* v, int i=0);
00152
00154
00157 virtual unsigned long GetMTime();
00158
00160 int GetNumberOfItems() { return this->Collection->GetNumberOfItems(); }
00161
00164 int GetIndexOfItem( vtkKWEPaintbrushSketch * s );
00165
00167
00169 vtkSetMacro(Representation, int);
00170 vtkGetMacro(Representation, int);
00171 virtual void SetRepresentationToGrayscale()
00172 { this->SetRepresentation(vtkKWEPaintbrushEnums::Grayscale); }
00173 virtual void SetRepresentationToBinary()
00174 { this->SetRepresentation(vtkKWEPaintbrushEnums::Binary); }
00175 virtual void SetRepresentationToLabel()
00176 { this->SetRepresentation(vtkKWEPaintbrushEnums::Label); }
00178
00180
00184 vtkSetMacro( MaximumNumberOfSketches, int );
00185 vtkGetMacro( MaximumNumberOfSketches, int );
00187
00190 virtual void CollapseHistory();
00191
00194 virtual void ShallowCopy(vtkDataObject *src);
00195
00197
00199 vtkGetObjectMacro( PaintbrushPropertyManager, vtkKWEPaintbrushPropertyManager );
00201
00205 void ComposeStrokes();
00206
00207 protected:
00208 vtkKWEPaintbrushDrawing();
00209 ~vtkKWEPaintbrushDrawing();
00210
00211 vtkKWEPaintbrushData *PaintbrushData;
00212 vtkImageData *ImageData;
00213 vtkImageData *LabelMap;
00214 vtkKWEPaintbrushOperation *PaintbrushOperation;
00215 vtkKWEPaintbrushPropertyManager *PaintbrushPropertyManager;
00216 vtkCollection *Collection;
00217 int Representation;
00218 int MaximumNumberOfSketches;
00219
00220
00221
00222 virtual void AllocatePaintbrushData();
00223
00226 void AssignUniqueLabelToSketch( vtkKWEPaintbrushSketch *s );
00227
00229 virtual void AddShapeToCurrentStroke( int n, double p[3] );
00230
00231 private:
00232 vtkKWEPaintbrushDrawing(const vtkKWEPaintbrushDrawing&);
00233 void operator=(const vtkKWEPaintbrushDrawing&);
00234 };
00235
00236 #endif