VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkRenderedGraphRepresentation.h 00005 00006 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen 00007 All rights reserved. 00008 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00009 00010 This software is distributed WITHOUT ANY WARRANTY; without even 00011 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00012 PURPOSE. See the above copyright notice for more information. 00013 00014 =========================================================================*/ 00015 /*------------------------------------------------------------------------- 00016 Copyright 2008 Sandia Corporation. 00017 Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, 00018 the U.S. Government retains certain rights in this software. 00019 -------------------------------------------------------------------------*/ 00031 #ifndef __vtkRenderedGraphRepresentation_h 00032 #define __vtkRenderedGraphRepresentation_h 00033 00034 #include "vtkRenderedRepresentation.h" 00035 #include "vtkSmartPointer.h" // for SP ivars 00036 00037 class vtkActor; 00038 class vtkApplyColors; 00039 class vtkApplyIcons; 00040 class vtkEdgeCenters; 00041 class vtkEdgeLayout; 00042 class vtkEdgeLayoutStrategy; 00043 class vtkGraphLayout; 00044 class vtkGraphLayoutStrategy; 00045 class vtkGraphToGlyphs; 00046 class vtkGraphToPoints; 00047 class vtkGraphToPolyData; 00048 class vtkIconGlyphFilter; 00049 class vtkInformation; 00050 class vtkInformationVector; 00051 class vtkLookupTable; 00052 class vtkPerturbCoincidentVertices; 00053 class vtkPointSetToLabelHierarchy; 00054 class vtkPolyData; 00055 class vtkPolyDataMapper; 00056 class vtkPolyDataMapper2D; 00057 class vtkRemoveHiddenData; 00058 class vtkRenderView; 00059 class vtkScalarBarWidget; 00060 class vtkScalarsToColors; 00061 class vtkTextProperty; 00062 class vtkTexturedActor2D; 00063 class vtkTransformCoordinateSystems; 00064 class vtkVertexDegree; 00065 class vtkView; 00066 class vtkViewTheme; 00067 00068 class VTK_VIEWS_EXPORT vtkRenderedGraphRepresentation : public vtkRenderedRepresentation 00069 { 00070 public: 00071 static vtkRenderedGraphRepresentation* New(); 00072 vtkTypeMacro(vtkRenderedGraphRepresentation, vtkRenderedRepresentation); 00073 void PrintSelf(ostream& os, vtkIndent indent); 00074 00075 // ------------------------------------------------------------------------ 00076 // Vertex labels 00077 00078 virtual void SetVertexLabelArrayName(const char* name); 00079 virtual const char* GetVertexLabelArrayName(); 00080 virtual void SetVertexLabelPriorityArrayName(const char* name); 00081 virtual const char* GetVertexLabelPriorityArrayName(); 00082 virtual void SetVertexLabelVisibility(bool b); 00083 virtual bool GetVertexLabelVisibility(); 00084 vtkBooleanMacro(VertexLabelVisibility, bool); 00085 virtual void SetVertexLabelTextProperty(vtkTextProperty* p); 00086 virtual vtkTextProperty* GetVertexLabelTextProperty(); 00087 vtkSetStringMacro(VertexHoverArrayName); 00088 vtkGetStringMacro(VertexHoverArrayName); 00090 00092 vtkSetMacro(HideVertexLabelsOnInteraction, bool) 00093 vtkGetMacro(HideVertexLabelsOnInteraction, bool) 00094 vtkBooleanMacro(HideVertexLabelsOnInteraction, bool) 00096 00097 // ------------------------------------------------------------------------ 00098 // Edge labels 00099 00100 virtual void SetEdgeLabelArrayName(const char* name); 00101 virtual const char* GetEdgeLabelArrayName(); 00102 virtual void SetEdgeLabelPriorityArrayName(const char* name); 00103 virtual const char* GetEdgeLabelPriorityArrayName(); 00104 virtual void SetEdgeLabelVisibility(bool b); 00105 virtual bool GetEdgeLabelVisibility(); 00106 vtkBooleanMacro(EdgeLabelVisibility, bool); 00107 virtual void SetEdgeLabelTextProperty(vtkTextProperty* p); 00108 virtual vtkTextProperty* GetEdgeLabelTextProperty(); 00109 vtkSetStringMacro(EdgeHoverArrayName); 00110 vtkGetStringMacro(EdgeHoverArrayName); 00112 00114 vtkSetMacro(HideEdgeLabelsOnInteraction, bool) 00115 vtkGetMacro(HideEdgeLabelsOnInteraction, bool) 00116 vtkBooleanMacro(HideEdgeLabelsOnInteraction, bool) 00118 00119 // ------------------------------------------------------------------------ 00120 // Vertex icons 00121 00122 virtual void SetVertexIconArrayName(const char* name); 00123 virtual const char* GetVertexIconArrayName(); 00124 virtual void SetVertexIconPriorityArrayName(const char* name); 00125 virtual const char* GetVertexIconPriorityArrayName(); 00126 virtual void SetVertexIconVisibility(bool b); 00127 virtual bool GetVertexIconVisibility(); 00128 vtkBooleanMacro(VertexIconVisibility, bool); 00129 virtual void AddVertexIconType(const char* name, int type); 00130 virtual void ClearVertexIconTypes(); 00131 virtual void SetUseVertexIconTypeMap(bool b); 00132 virtual bool GetUseVertexIconTypeMap(); 00133 vtkBooleanMacro(UseVertexIconTypeMap, bool); 00134 virtual void SetVertexIconAlignment(int align); 00135 virtual int GetVertexIconAlignment(); 00136 virtual void SetVertexSelectedIcon(int icon); 00137 virtual int GetVertexSelectedIcon(); 00138 virtual void SetVertexDefaultIcon(int icon); 00139 virtual int GetVertexDefaultIcon(); 00140 00142 00147 virtual void SetVertexIconSelectionMode(int mode); 00148 virtual int GetVertexIconSelectionMode(); 00149 virtual void SetVertexIconSelectionModeToSelectedIcon() 00150 { this->SetVertexIconSelectionMode(0); } 00151 virtual void SetVertexIconSelectionModeToSelectedOffset() 00152 { this->SetVertexIconSelectionMode(1); } 00153 virtual void SetVertexIconSelectionModeToAnnotationIcon() 00154 { this->SetVertexIconSelectionMode(2); } 00155 virtual void SetVertexIconSelectionModeToIgnoreSelection() 00156 { this->SetVertexIconSelectionMode(3); } 00158 00159 // ------------------------------------------------------------------------ 00160 // Edge icons 00161 00162 virtual void SetEdgeIconArrayName(const char* name); 00163 virtual const char* GetEdgeIconArrayName(); 00164 virtual void SetEdgeIconPriorityArrayName(const char* name); 00165 virtual const char* GetEdgeIconPriorityArrayName(); 00166 virtual void SetEdgeIconVisibility(bool b); 00167 virtual bool GetEdgeIconVisibility(); 00168 vtkBooleanMacro(EdgeIconVisibility, bool); 00169 virtual void AddEdgeIconType(const char* name, int type); 00170 virtual void ClearEdgeIconTypes(); 00171 virtual void SetUseEdgeIconTypeMap(bool b); 00172 virtual bool GetUseEdgeIconTypeMap(); 00173 vtkBooleanMacro(UseEdgeIconTypeMap, bool); 00174 virtual void SetEdgeIconAlignment(int align); 00175 virtual int GetEdgeIconAlignment(); 00176 00177 // ------------------------------------------------------------------------ 00178 // Vertex colors 00179 00180 virtual void SetColorVerticesByArray(bool b); 00181 virtual bool GetColorVerticesByArray(); 00182 vtkBooleanMacro(ColorVerticesByArray, bool); 00183 virtual void SetVertexColorArrayName(const char* name); 00184 virtual const char* GetVertexColorArrayName(); 00185 00186 // ------------------------------------------------------------------------ 00187 // Edge colors 00188 00189 virtual void SetColorEdgesByArray(bool b); 00190 virtual bool GetColorEdgesByArray(); 00191 vtkBooleanMacro(ColorEdgesByArray, bool); 00192 virtual void SetEdgeColorArrayName(const char* name); 00193 virtual const char* GetEdgeColorArrayName(); 00194 00195 // ------------------------------------------------------------------------ 00196 // Enabled vertices 00197 00198 virtual void SetEnableVerticesByArray(bool b); 00199 virtual bool GetEnableVerticesByArray(); 00200 vtkBooleanMacro(EnableVerticesByArray, bool); 00201 virtual void SetEnabledVerticesArrayName(const char* name); 00202 virtual const char* GetEnabledVerticesArrayName(); 00203 00204 // ------------------------------------------------------------------------ 00205 // Enabled edges 00206 00207 virtual void SetEnableEdgesByArray(bool b); 00208 virtual bool GetEnableEdgesByArray(); 00209 vtkBooleanMacro(EnableEdgesByArray, bool); 00210 virtual void SetEnabledEdgesArrayName(const char* name); 00211 virtual const char* GetEnabledEdgesArrayName(); 00212 00213 virtual void SetEdgeVisibility(bool b); 00214 virtual bool GetEdgeVisibility(); 00215 vtkBooleanMacro(EdgeVisibility, bool); 00216 00217 void SetEdgeSelection(bool b); 00218 bool GetEdgeSelection(); 00219 00220 // ------------------------------------------------------------------------ 00221 // Vertex layout strategy 00222 00224 00225 virtual void SetLayoutStrategy(vtkGraphLayoutStrategy* strategy); 00226 virtual vtkGraphLayoutStrategy* GetLayoutStrategy(); 00228 00230 00231 virtual void SetLayoutStrategy(const char* name); 00232 vtkGetStringMacro(LayoutStrategyName); 00234 00236 00237 void SetLayoutStrategyToRandom() 00238 { this->SetLayoutStrategy("Random"); } 00239 void SetLayoutStrategyToForceDirected() 00240 { this->SetLayoutStrategy("Force Directed"); } 00241 void SetLayoutStrategyToSimple2D() 00242 { this->SetLayoutStrategy("Simple 2D"); } 00243 void SetLayoutStrategyToClustering2D() 00244 { this->SetLayoutStrategy("Clustering 2D"); } 00245 void SetLayoutStrategyToCommunity2D() 00246 { this->SetLayoutStrategy("Community 2D"); } 00247 void SetLayoutStrategyToFast2D() 00248 { this->SetLayoutStrategy("Fast 2D"); } 00249 void SetLayoutStrategyToPassThrough() 00250 { this->SetLayoutStrategy("Pass Through"); } 00251 void SetLayoutStrategyToCircular() 00252 { this->SetLayoutStrategy("Circular"); } 00253 void SetLayoutStrategyToTree() 00254 { this->SetLayoutStrategy("Tree"); } 00255 void SetLayoutStrategyToCosmicTree() 00256 { this->SetLayoutStrategy("Cosmic Tree"); } 00257 void SetLayoutStrategyToCone() 00258 { this->SetLayoutStrategy("Cone"); } 00259 void SetLayoutStrategyToSpanTree() 00260 { this->SetLayoutStrategy("Span Tree"); } 00262 00264 00266 virtual void SetLayoutStrategyToAssignCoordinates( 00267 const char* xarr, const char* yarr = 0, const char* zarr = 0); 00269 00271 00280 virtual void SetLayoutStrategyToTree( 00281 bool radial, 00282 double angle = 90, 00283 double leafSpacing = 0.9, 00284 double logSpacing = 1.0); 00286 00288 00297 virtual void SetLayoutStrategyToCosmicTree( 00298 const char* nodeSizeArrayName, 00299 bool sizeLeafNodesOnly = true, 00300 int layoutDepth = 0, 00301 vtkIdType layoutRoot = -1); 00303 00304 // ------------------------------------------------------------------------ 00305 // Edge layout strategy 00306 00308 00309 virtual void SetEdgeLayoutStrategy(vtkEdgeLayoutStrategy* strategy); 00310 virtual vtkEdgeLayoutStrategy* GetEdgeLayoutStrategy(); 00311 void SetEdgeLayoutStrategyToArcParallel() 00312 { this->SetEdgeLayoutStrategy("Arc Parallel"); } 00313 void SetEdgeLayoutStrategyToPassThrough() 00314 { this->SetEdgeLayoutStrategy("Pass Through"); } 00316 00319 virtual void SetEdgeLayoutStrategyToGeo(double explodeFactor = 0.2); 00320 00322 00323 virtual void SetEdgeLayoutStrategy(const char* name); 00324 vtkGetStringMacro(EdgeLayoutStrategyName); 00326 00327 // ------------------------------------------------------------------------ 00328 // Miscellaneous 00329 00331 virtual void ApplyViewTheme(vtkViewTheme* theme); 00332 00334 00335 virtual void SetGlyphType(int type); 00336 virtual int GetGlyphType(); 00338 00340 00341 virtual void SetScaling(bool b); 00342 virtual bool GetScaling(); 00343 vtkBooleanMacro(Scaling, bool); 00345 00347 00348 virtual void SetScalingArrayName(const char* name); 00349 virtual const char* GetScalingArrayName(); 00351 00353 00354 virtual void SetVertexScalarBarVisibility(bool b); 00355 virtual bool GetVertexScalarBarVisibility(); 00356 virtual void SetEdgeScalarBarVisibility(bool b); 00357 virtual bool GetEdgeScalarBarVisibility(); 00359 00361 virtual bool IsLayoutComplete(); 00362 00364 virtual void UpdateLayout(); 00365 00367 void ComputeSelectedGraphBounds( double bounds[6] ); 00368 00369 protected: 00370 vtkRenderedGraphRepresentation(); 00371 ~vtkRenderedGraphRepresentation(); 00372 00374 00375 virtual bool AddToView(vtkView* view); 00376 virtual bool RemoveFromView(vtkView* view); 00378 00379 virtual void PrepareForRendering(vtkRenderView* view); 00380 00381 virtual vtkSelection* ConvertSelection(vtkView* view, vtkSelection* sel); 00382 00383 virtual vtkUnicodeString GetHoverTextInternal(vtkSelection* sel); 00384 00386 00387 virtual int RequestData( 00388 vtkInformation* request, 00389 vtkInformationVector** inputVector, 00390 vtkInformationVector* outputVector); 00392 00393 //BTX 00395 00396 vtkSmartPointer<vtkApplyColors> ApplyColors; 00397 vtkSmartPointer<vtkVertexDegree> VertexDegree; 00398 vtkSmartPointer<vtkPolyData> EmptyPolyData; 00399 vtkSmartPointer<vtkEdgeCenters> EdgeCenters; 00400 vtkSmartPointer<vtkGraphToPoints> GraphToPoints; 00401 vtkSmartPointer<vtkPointSetToLabelHierarchy> VertexLabelHierarchy; 00402 vtkSmartPointer<vtkPointSetToLabelHierarchy> EdgeLabelHierarchy; 00403 vtkSmartPointer<vtkGraphLayout> Layout; 00404 vtkSmartPointer<vtkPerturbCoincidentVertices> Coincident; 00405 vtkSmartPointer<vtkEdgeLayout> EdgeLayout; 00406 vtkSmartPointer<vtkGraphToPolyData> GraphToPoly; 00407 vtkSmartPointer<vtkPolyDataMapper> EdgeMapper; 00408 vtkSmartPointer<vtkActor> EdgeActor; 00409 vtkSmartPointer<vtkGraphToGlyphs> VertexGlyph; 00410 vtkSmartPointer<vtkPolyDataMapper> VertexMapper; 00411 vtkSmartPointer<vtkActor> VertexActor; 00412 vtkSmartPointer<vtkGraphToGlyphs> OutlineGlyph; 00413 vtkSmartPointer<vtkPolyDataMapper> OutlineMapper; 00414 vtkSmartPointer<vtkActor> OutlineActor; 00415 vtkSmartPointer<vtkScalarBarWidget> VertexScalarBar; 00416 vtkSmartPointer<vtkScalarBarWidget> EdgeScalarBar; 00417 vtkSmartPointer<vtkRemoveHiddenData> RemoveHiddenGraph; 00418 vtkSmartPointer<vtkApplyIcons> ApplyVertexIcons; 00419 vtkSmartPointer<vtkGraphToPoints> VertexIconPoints; 00420 vtkSmartPointer<vtkTransformCoordinateSystems> VertexIconTransform; 00421 vtkSmartPointer<vtkIconGlyphFilter> VertexIconGlyph; 00422 vtkSmartPointer<vtkPolyDataMapper2D> VertexIconMapper; 00423 vtkSmartPointer<vtkTexturedActor2D> VertexIconActor; 00424 //ETX 00426 00427 char* VertexHoverArrayName; 00428 char* EdgeHoverArrayName; 00429 00430 vtkSetStringMacro(VertexColorArrayNameInternal); 00431 vtkGetStringMacro(VertexColorArrayNameInternal); 00432 char* VertexColorArrayNameInternal; 00433 00434 vtkSetStringMacro(EdgeColorArrayNameInternal); 00435 vtkGetStringMacro(EdgeColorArrayNameInternal); 00436 char* EdgeColorArrayNameInternal; 00437 00438 vtkSetStringMacro(ScalingArrayNameInternal); 00439 vtkGetStringMacro(ScalingArrayNameInternal); 00440 char* ScalingArrayNameInternal; 00441 00442 vtkSetStringMacro(LayoutStrategyName); 00443 char* LayoutStrategyName; 00444 vtkSetStringMacro(EdgeLayoutStrategyName); 00445 char* EdgeLayoutStrategyName; 00446 bool HideVertexLabelsOnInteraction; 00447 bool HideEdgeLabelsOnInteraction; 00448 00449 bool EdgeSelection; 00450 00451 private: 00452 vtkRenderedGraphRepresentation(const vtkRenderedGraphRepresentation&); // Not implemented 00453 void operator=(const vtkRenderedGraphRepresentation&); // Not implemented 00454 }; 00455 00456 #endif 00457