• Main Page
  • Related Pages
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

dox/Views/vtkGraphLayoutView.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    $RCSfile: vtkGraphLayoutView.h,v $
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 -------------------------------------------------------------------------*/
00044 #ifndef __vtkGraphLayoutView_h
00045 #define __vtkGraphLayoutView_h
00046 
00047 #include "vtkSmartPointer.h"    // Required for smart pointer internal ivars.
00048 #include "vtkRenderView.h"
00049 
00050 class vtkActor;
00051 class vtkActor2D;
00052 class vtkArcParallelEdgeStrategy;
00053 class vtkCircularLayoutStrategy;
00054 class vtkClustering2DLayoutStrategy;
00055 class vtkCoordinate;
00056 class vtkCommunity2DLayoutStrategy;
00057 class vtkConstrained2DLayoutStrategy;
00058 class vtkDynamic2DLabelMapper;
00059 class vtkEdgeCenters;
00060 class vtkEdgeLayout;
00061 class vtkEdgeLayoutStrategy;
00062 class vtkExtractSelectedGraph;
00063 class vtkFast2DLayoutStrategy;
00064 class vtkForceDirectedLayoutStrategy;
00065 class vtkGraphLayout;
00066 class vtkGraphLayoutStrategy;
00067 class vtkGraphMapper;
00068 class vtkGraphToPolyData;
00069 class vtkKdTreeSelector;
00070 class vtkLookupTable;
00071 class vtkPassThroughEdgeStrategy;
00072 class vtkPassThroughLayoutStrategy;
00073 class vtkPerturbCoincidentVertices;
00074 class vtkPolyDataMapper;
00075 class vtkRandomLayoutStrategy;
00076 class vtkScalarBarWidget;
00077 class vtkSelectionLink;
00078 class vtkSimple2DLayoutStrategy;
00079 class vtkTexture;
00080 class vtkVertexDegree;
00081 class vtkVertexGlyphFilter;
00082 class vtkViewTheme;
00083 class vtkHardwareSelector;
00084 
00085 
00086 
00087 class VTK_VIEWS_EXPORT vtkGraphLayoutView : public vtkRenderView
00088 {
00089 public:
00090   static vtkGraphLayoutView *New();
00091   vtkTypeRevisionMacro(vtkGraphLayoutView, vtkRenderView);
00092   void PrintSelf(ostream& os, vtkIndent indent);
00093   
00095 
00096   void SetVertexLabelArrayName(const char* name);
00097   const char* GetVertexLabelArrayName();
00099   
00101 
00102   void SetEdgeLabelArrayName(const char* name);
00103   const char* GetEdgeLabelArrayName();
00105   
00107 
00108   void SetVertexLabelVisibility(bool vis);
00109   bool GetVertexLabelVisibility();
00110   void VertexLabelVisibilityOn();
00111   void VertexLabelVisibilityOff();
00113   
00115 
00116   void SetEdgeLabelVisibility(bool vis);
00117   bool GetEdgeLabelVisibility();
00118   void EdgeLabelVisibilityOn();
00119   void EdgeLabelVisibilityOff();
00121   
00123 
00124   void SetVertexColorArrayName(const char* name);
00125   const char* GetVertexColorArrayName();
00127   
00129 
00130   void SetColorVertices(bool vis);
00131   bool GetColorVertices();
00132   void ColorVerticesOn();
00133   void ColorVerticesOff();
00135   
00137 
00138   void SetEdgeColorArrayName(const char* name);
00139   const char* GetEdgeColorArrayName();
00141   
00143 
00144   void SetColorEdges(bool vis);
00145   bool GetColorEdges();
00146   void ColorEdgesOn();
00147   void ColorEdgesOff();
00149 
00151 
00152   void SetEnabledEdgesArrayName(const char* name);
00153   const char* GetEnabledEdgesArrayName();
00155   
00157 
00158   void SetEnableEdgesByArray(bool vis);
00159   int GetEnableEdgesByArray();
00161 
00163 
00164   void SetEnabledVerticesArrayName(const char* name);
00165   const char* GetEnabledVerticesArrayName();
00167   
00169 
00170   void SetEnableVerticesByArray(bool vis);
00171   int GetEnableVerticesByArray();
00173 
00175 
00176   void SetScalingArrayName(const char* name);
00177   const char* GetScalingArrayName();
00179   
00181 
00182   void SetScaledGlyphs(bool arg);
00183   bool GetScaledGlyphs();
00184   vtkBooleanMacro(ScaledGlyphs, bool);
00186   
00188 
00199   void SetLayoutStrategy(const char* name);
00200   void SetLayoutStrategyToRandom()
00201     { this->SetLayoutStrategy("Random"); }
00202   void SetLayoutStrategyToForceDirected()
00203     { this->SetLayoutStrategy("Force Directed"); }
00204   void SetLayoutStrategyToSimple2D()
00205     { this->SetLayoutStrategy("Simple 2D"); }
00206   void SetLayoutStrategyToClustering2D()
00207     { this->SetLayoutStrategy("Clustering 2D"); }
00208   void SetLayoutStrategyToCommunity2D()
00209     { this->SetLayoutStrategy("Community 2D"); }
00210   void SetLayoutStrategyToFast2D()
00211     { this->SetLayoutStrategy("Fast 2D"); }
00212   void SetLayoutStrategyToPassThrough()
00213     { this->SetLayoutStrategy("Pass Through"); }
00214   void SetLayoutStrategyToCircular()
00215     { this->SetLayoutStrategy("Circular"); }
00216   const char* GetLayoutStrategyName()
00217     { return this->GetLayoutStrategyNameInternal(); }
00219 
00221 
00224   vtkGetObjectMacro(LayoutStrategy,vtkGraphLayoutStrategy);
00225   void SetLayoutStrategy(vtkGraphLayoutStrategy *s);
00227 
00229 
00233   void SetEdgeLayoutStrategy(const char* name);
00234   void SetEdgeLayoutStrategyToArcParallel()
00235     { this->SetEdgeLayoutStrategy("Arc Parallel"); }
00236   void SetEdgeLayoutStrategyToPassThrough()
00237     { this->SetEdgeLayoutStrategy("Pass Through"); }
00238   const char* GetEdgeLayoutStrategyName()
00239     { return this->GetEdgeLayoutStrategyNameInternal(); }
00241 
00243 
00246   vtkGetObjectMacro(EdgeLayoutStrategy,vtkEdgeLayoutStrategy);
00247   void SetEdgeLayoutStrategy(vtkEdgeLayoutStrategy *s);
00249 
00254   void SetIterationsPerLayout(int iterations);
00255   
00257   void SetIconTexture(vtkTexture *texture);
00258 
00262   void AddIconType(char *type, int index);
00263 
00265   void ClearIconTypes();
00266 
00268   void SetIconSize(int *size);
00269 
00272   void SetIconAlignment(int alignment);
00273 
00275 
00276   void SetIconVisibility(bool b);
00277   bool GetIconVisibility();
00278   vtkBooleanMacro(IconVisibility, bool);
00280 
00282 
00283   void SetIconArrayName(const char* name);
00284   const char* GetIconArrayName();
00286   
00288   virtual void SetupRenderWindow(vtkRenderWindow* win);
00289   
00291   virtual void ApplyViewTheme(vtkViewTheme* theme);
00292   
00294 
00295   virtual void SetVertexLabelFontSize(const int size);
00296   virtual int GetVertexLabelFontSize();
00298   
00300 
00301   virtual void SetEdgeLabelFontSize(const int size);
00302   virtual int GetEdgeLabelFontSize();
00304 
00306   void SetEdgeScalarBarVisibility(bool vis);
00307 
00309   void SetVertexScalarBarVisibility(bool vis);
00310 
00314   virtual int IsLayoutComplete();
00315   
00320   virtual void UpdateLayout();
00321 
00322 protected:
00323   vtkGraphLayoutView();
00324   ~vtkGraphLayoutView();
00325 
00327 
00328   virtual void ProcessEvents(vtkObject* caller, unsigned long eventId, 
00329     void* callData);
00331   
00333 
00335   virtual void AddInputConnection( int port, int item,
00336     vtkAlgorithmOutput* conn,
00337     vtkAlgorithmOutput* selectionConn);
00339   
00341 
00342   virtual void RemoveInputConnection( int port, int item,
00343     vtkAlgorithmOutput* conn,
00344     vtkAlgorithmOutput* selectionConn);
00346   
00348   virtual void PrepareForRendering();
00349 
00351   void MapToXYPlane(double displayX, double displayY, double &x, double &y);
00352 
00354 
00355   vtkGetStringMacro(LayoutStrategyNameInternal);
00356   vtkSetStringMacro(LayoutStrategyNameInternal);
00357   char* LayoutStrategyNameInternal;
00359   
00361   vtkGraphLayoutStrategy* LayoutStrategy;
00362   
00364 
00365   vtkGetStringMacro(EdgeLayoutStrategyNameInternal);
00366   vtkSetStringMacro(EdgeLayoutStrategyNameInternal);
00367   char* EdgeLayoutStrategyNameInternal;
00369   
00371   vtkEdgeLayoutStrategy* EdgeLayoutStrategy;
00372   
00376   vtkEdgeLayoutStrategy* EdgeLayoutPreference;
00377 
00379 
00380   vtkGetStringMacro(IconArrayNameInternal);
00381   vtkSetStringMacro(IconArrayNameInternal);
00382   char* IconArrayNameInternal;
00384   
00385   //BTX
00386   // Used for coordinate conversion
00387   vtkSmartPointer<vtkCoordinate>                   Coordinate;
00388 
00389   // Representation objects
00390   vtkSmartPointer<vtkGraphLayout>                  GraphLayout;
00391   vtkSmartPointer<vtkRandomLayoutStrategy>         RandomStrategy;
00392   vtkSmartPointer<vtkForceDirectedLayoutStrategy>  ForceDirectedStrategy;
00393   vtkSmartPointer<vtkSimple2DLayoutStrategy>       Simple2DStrategy;
00394   vtkSmartPointer<vtkClustering2DLayoutStrategy>   Clustering2DStrategy;
00395   vtkSmartPointer<vtkCommunity2DLayoutStrategy>    Community2DStrategy;
00396   vtkSmartPointer<vtkConstrained2DLayoutStrategy>  Constrained2DStrategy;
00397   vtkSmartPointer<vtkFast2DLayoutStrategy>         Fast2DStrategy;
00398   vtkSmartPointer<vtkPassThroughLayoutStrategy>    PassThroughStrategy;
00399   vtkSmartPointer<vtkCircularLayoutStrategy>       CircularStrategy;
00400   vtkSmartPointer<vtkEdgeLayout>                   EdgeLayout;
00401   vtkSmartPointer<vtkArcParallelEdgeStrategy>      ArcParallelStrategy;
00402   vtkSmartPointer<vtkPassThroughEdgeStrategy>      PassThroughEdgeStrategy;
00403   vtkSmartPointer<vtkPerturbCoincidentVertices>    PerturbCoincidentVertices;
00404   vtkSmartPointer<vtkVertexDegree>                 VertexDegree;
00405   vtkSmartPointer<vtkEdgeCenters>                  EdgeCenters;
00406   vtkSmartPointer<vtkActor>                        GraphActor;
00407   vtkSmartPointer<vtkGraphMapper>                  GraphMapper;
00408   vtkSmartPointer<vtkDynamic2DLabelMapper>         VertexLabelMapper;
00409   vtkSmartPointer<vtkActor2D>                      VertexLabelActor;
00410   vtkSmartPointer<vtkDynamic2DLabelMapper>         EdgeLabelMapper;
00411   vtkSmartPointer<vtkActor2D>                      EdgeLabelActor;
00412   vtkSmartPointer<vtkScalarBarWidget>              VertexScalarBar;
00413   vtkSmartPointer<vtkScalarBarWidget>              EdgeScalarBar;
00414   
00415   // Selection objects
00416   vtkSmartPointer<vtkKdTreeSelector>               KdTreeSelector;
00417   vtkSmartPointer<vtkHardwareSelector>             HardwareSelector;
00418   vtkSmartPointer<vtkExtractSelectedGraph>         ExtractSelectedGraph;
00419   vtkSmartPointer<vtkActor>                        SelectedGraphActor;
00420   vtkSmartPointer<vtkGraphMapper>                  SelectedGraphMapper;
00421 
00422   // Actor for edge selection
00423   vtkSmartPointer<vtkGraphToPolyData>              EdgeSelectionPoly;
00424   vtkSmartPointer<vtkPolyDataMapper>               EdgeSelectionMapper;
00425   vtkSmartPointer<vtkActor>                        EdgeSelectionActor;
00426   //ETX
00427 
00428 private:
00429   vtkGraphLayoutView(const vtkGraphLayoutView&);  // Not implemented.
00430   void operator=(const vtkGraphLayoutView&);  // Not implemented.
00431 };
00432 
00433 #endif

Generated by  doxygen 1.7.1