00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00032 #ifndef __vtkGraphMapper_h
00033 #define __vtkGraphMapper_h
00034
00035 #include "vtkMapper.h"
00036
00037 #include "vtkSmartPointer.h"
00038
00039 class vtkActor2D;
00040 class vtkMapArrayValues;
00041 class vtkCamera;
00042 class vtkFollower;
00043 class vtkGraph;
00044 class vtkGlyph3D;
00045 class vtkGraphToPolyData;
00046 class vtkIconGlyphFilter;
00047 class vtkCellCenters;
00048 class vtkPolyData;
00049 class vtkPolyDataMapper;
00050 class vtkPolyDataMapper2D;
00051 class vtkLookupTable;
00052 class vtkTransformCoordinateSystems;
00053 class vtkTexture;
00054 class vtkTexturedActor2D;
00055 class vtkVertexGlyphFilter;
00056 class vtkViewTheme;
00057
00058
00059
00060 class VTK_RENDERING_EXPORT vtkGraphMapper : public vtkMapper
00061 {
00062 public:
00063 static vtkGraphMapper *New();
00064 vtkTypeMacro(vtkGraphMapper,vtkMapper);
00065 void PrintSelf(ostream& os, vtkIndent indent);
00066 void Render(vtkRenderer *ren, vtkActor *act);
00067
00069
00070 void SetVertexColorArrayName(const char* name);
00071 const char* GetVertexColorArrayName();
00073
00075
00076 void SetColorVertices(bool vis);
00077 bool GetColorVertices();
00078 void ColorVerticesOn();
00079 void ColorVerticesOff();
00081
00083
00087 void SetScaledGlyphs(bool arg);
00088 vtkGetMacro(ScaledGlyphs,bool);
00089 vtkBooleanMacro(ScaledGlyphs, bool);
00091
00093
00094 vtkSetStringMacro(ScalingArrayName);
00095 vtkGetStringMacro(ScalingArrayName);
00097
00099
00100 void SetEdgeVisibility(bool vis);
00101 bool GetEdgeVisibility();
00102 vtkBooleanMacro(EdgeVisibility, bool);
00104
00106
00107 void SetEdgeColorArrayName(const char* name);
00108 const char* GetEdgeColorArrayName();
00110
00112
00113 void SetColorEdges(bool vis);
00114 bool GetColorEdges();
00115 void ColorEdgesOn();
00116 void ColorEdgesOff();
00118
00120
00121 vtkSetStringMacro(EnabledEdgesArrayName);
00122 vtkGetStringMacro(EnabledEdgesArrayName);
00124
00126
00127 vtkSetMacro(EnableEdgesByArray,int);
00128 vtkGetMacro(EnableEdgesByArray,int);
00129 vtkBooleanMacro(EnableEdgesByArray,int);
00131
00133
00134 vtkSetStringMacro(EnabledVerticesArrayName);
00135 vtkGetStringMacro(EnabledVerticesArrayName);
00137
00139
00141 vtkSetMacro(EnableVerticesByArray,int);
00142 vtkGetMacro(EnableVerticesByArray,int);
00143 vtkBooleanMacro(EnableVerticesByArray,int);
00145
00147
00148 void SetIconArrayName(const char* name);
00149 const char* GetIconArrayName();
00151
00155 void AddIconType(char *type, int index);
00156
00158 void ClearIconTypes();
00159
00161
00163 void SetIconSize(int *size);
00164 int *GetIconSize();
00166
00169 void SetIconAlignment(int alignment);
00170
00172
00173 vtkTexture *GetIconTexture();
00174 void SetIconTexture(vtkTexture *texture);
00176
00178
00179 void SetIconVisibility(bool vis);
00180 bool GetIconVisibility();
00181 vtkBooleanMacro(IconVisibility, bool);
00183
00185
00186 vtkGetMacro(VertexPointSize,float);
00187 void SetVertexPointSize(float size);
00189
00191
00192 vtkGetMacro(EdgeLineWidth,float);
00193 void SetEdgeLineWidth(float width);
00195
00197 virtual void ApplyViewTheme(vtkViewTheme* theme);
00198
00202 void ReleaseGraphicsResources(vtkWindow *);
00203
00205 unsigned long GetMTime();
00206
00208
00209 void SetInput(vtkGraph *input);
00210 vtkGraph *GetInput();
00212
00214
00216 virtual double *GetBounds();
00217 virtual void GetBounds(double* bounds)
00218 { Superclass::GetBounds(bounds); }
00220
00222
00223 vtkGetObjectMacro(EdgeLookupTable, vtkLookupTable);
00224 vtkGetObjectMacro(VertexLookupTable, vtkLookupTable);
00226
00227 protected:
00228 vtkGraphMapper();
00229 ~vtkGraphMapper();
00230
00232
00233 vtkGetStringMacro(VertexColorArrayNameInternal);
00234 vtkSetStringMacro(VertexColorArrayNameInternal);
00235 vtkGetStringMacro(EdgeColorArrayNameInternal);
00236 vtkSetStringMacro(EdgeColorArrayNameInternal);
00237 char* VertexColorArrayNameInternal;
00238 char* EdgeColorArrayNameInternal;
00240
00241 char* EnabledEdgesArrayName;
00242 char* EnabledVerticesArrayName;
00243 int EnableEdgesByArray;
00244 int EnableVerticesByArray;
00245
00246 vtkGetStringMacro(IconArrayNameInternal);
00247 vtkSetStringMacro(IconArrayNameInternal);
00248 char* IconArrayNameInternal;
00249
00250
00251 vtkSmartPointer<vtkGlyph3D> CircleGlyph;
00252 vtkSmartPointer<vtkGlyph3D> CircleOutlineGlyph;
00253
00254 vtkSmartPointer<vtkGraphToPolyData> GraphToPoly;
00255 vtkSmartPointer<vtkVertexGlyphFilter> VertexGlyph;
00256 vtkSmartPointer<vtkIconGlyphFilter> IconGlyph;
00257 vtkSmartPointer<vtkMapArrayValues> IconTypeToIndex;
00258 vtkSmartPointer<vtkTransformCoordinateSystems> IconTransform;
00259
00260 vtkSmartPointer<vtkPolyDataMapper> EdgeMapper;
00261 vtkSmartPointer<vtkPolyDataMapper> VertexMapper;
00262 vtkSmartPointer<vtkPolyDataMapper> OutlineMapper;
00263 vtkSmartPointer<vtkPolyDataMapper2D> IconMapper;
00264
00265 vtkSmartPointer<vtkActor> EdgeActor;
00266 vtkSmartPointer<vtkActor> VertexActor;
00267 vtkSmartPointer<vtkActor> OutlineActor;
00268 vtkSmartPointer<vtkTexturedActor2D> IconActor;
00269
00270
00271
00272 vtkLookupTable* EdgeLookupTable;
00273 vtkLookupTable* VertexLookupTable;
00274
00275 virtual void ReportReferences(vtkGarbageCollector*);
00276
00277
00278 virtual int FillInputPortInformation(int port, vtkInformation* info);
00279
00280 private:
00281 vtkGraphMapper(const vtkGraphMapper&);
00282 void operator=(const vtkGraphMapper&);
00283
00284
00285 vtkPolyData* CreateCircle(bool filled);
00286
00287 float VertexPointSize;
00288 float EdgeLineWidth;
00289 bool ScaledGlyphs;
00290 char* ScalingArrayName;
00291 };
00292
00293 #endif
00294
00295