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
00025 #ifndef __vtkKWEPaintbrushSketch_h
00026 #define __vtkKWEPaintbrushSketch_h
00027
00028 #include "VTKEdgeConfigure.h"
00029 #include "vtkKWEPaintbrushEnums.h"
00030 #include "vtkObject.h"
00031 #include <vtkstd/vector>
00032
00033 class vtkKWEPaintbrushOperation;
00034 class vtkKWEPaintbrushStroke;
00035 class vtkImageData;
00036 class vtkKWEPaintbrushData;
00037 class vtkKWEPaintbrushLabelData;
00038 class vtkKWEPaintbrushProperty;
00039 class vtkKWEPaintbrushDrawing;
00040
00041 class VTKEdge_WIDGETS_EXPORT vtkKWEPaintbrushSketch : public vtkObject
00042 {
00043
00044 friend class vtkKWEPaintbrushDrawing;
00045 friend class vtkKWEPaintbrushProperty;
00046
00047 public:
00048
00050
00051 static vtkKWEPaintbrushSketch *New();
00052 vtkTypeRevisionMacro(vtkKWEPaintbrushSketch, vtkObject);
00053 void PrintSelf(ostream& os, vtkIndent indent);
00055
00057
00058 virtual void SetPaintbrushOperation( vtkKWEPaintbrushOperation * );
00059 vtkGetObjectMacro( PaintbrushOperation, vtkKWEPaintbrushOperation );
00061
00063
00065 virtual void SetImageData( vtkImageData * );
00066 vtkGetObjectMacro( ImageData, vtkImageData );
00068
00070
00072 vtkGetObjectMacro( PaintbrushData, vtkKWEPaintbrushData );
00073 virtual void SetPaintbrushData( vtkKWEPaintbrushData * );
00075
00080 virtual void Initialize();
00081
00086 virtual void Initialize( vtkKWEPaintbrushLabelData * labelMap );
00087
00089
00090 vtkSetMacro(Representation, int);
00091 vtkGetMacro(Representation, int);
00092 virtual void SetRepresentationToGrayscale()
00093 { this->SetRepresentation(vtkKWEPaintbrushEnums::Grayscale); }
00094 virtual void SetRepresentationToBinary()
00095 { this->SetRepresentation(vtkKWEPaintbrushEnums::Binary); }
00096 virtual void SetRepresentationToLabel()
00097 { this->SetRepresentation(vtkKWEPaintbrushEnums::Label); }
00099
00101
00104 vtkSetMacro( Label, vtkKWEPaintbrushEnums::LabelType );
00105 vtkGetMacro( Label, vtkKWEPaintbrushEnums::LabelType );
00107
00109
00114 vtkSetClampMacro( HistoryLength, int, 0, 10 );
00115 vtkGetMacro( HistoryLength, int );
00117
00119
00121 vtkGetObjectMacro( PaintbrushProperty, vtkKWEPaintbrushProperty );
00123
00125
00136 virtual int AddNewStroke(
00137 int polarity = vtkKWEPaintbrushEnums::Draw,
00138 vtkKWEPaintbrushData * initialization = NULL,
00139 int *extents = NULL,
00140 bool forceMutable = false );
00142
00144 void Add( vtkKWEPaintbrushSketch * sketch );
00145
00147 virtual int DeleteLastStroke();
00148
00150
00153 virtual int PopStroke();
00154 virtual int PushStroke();
00156
00158 virtual void EraseStrokes( int start, int end );
00159
00164 void CopySketchFromExtentToExtent(int sourceExtent[6], int targetExtent[6]);
00165
00167 virtual unsigned long GetMTime();
00168
00170 virtual void ComposeStrokes();
00171
00172 protected:
00173 vtkKWEPaintbrushSketch();
00174 ~vtkKWEPaintbrushSketch();
00175
00176 vtkKWEPaintbrushOperation *PaintbrushOperation;
00177 vtkKWEPaintbrushData *PaintbrushData;
00178 vtkKWEPaintbrushProperty *PaintbrushProperty;
00179 vtkImageData *ImageData;
00180 int CurrentStroke;
00181 int Representation;
00182 int HistoryLength;
00183 vtkKWEPaintbrushDrawing *PaintbrushDrawing;
00184
00185
00186 vtkKWEPaintbrushEnums::LabelType Label;
00187
00189
00191 virtual void AddShapeToCurrentStroke(
00192 double p[3],
00193 vtkKWEPaintbrushData * auxData = NULL);
00195
00199 virtual void AllocatePaintbrushData();
00200
00203 void CollapseHistory();
00204
00205 private:
00206 vtkKWEPaintbrushSketch(const vtkKWEPaintbrushSketch&);
00207 void operator=(const vtkKWEPaintbrushSketch&);
00208
00209
00210 void SetMutable( int m );
00211
00212
00213
00214 vtkstd::vector<vtkKWEPaintbrushStroke*> Strokes;
00215
00217
00218 void GetStrokes(vtkstd::vector< vtkKWEPaintbrushStroke * > &strokes);
00219
00220 };
00222
00223 #endif