00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00036 #ifndef __vtkBarChartActor_h
00037 #define __vtkBarChartActor_h
00038
00039 #include "vtkActor2D.h"
00040
00041 class vtkAxisActor2D;
00042 class vtkDataObject;
00043 class vtkPolyData;
00044 class vtkPolyDataMapper2D;
00045 class vtkTextMapper;
00046 class vtkTextProperty;
00047 class vtkLegendBoxActor;
00048 class vtkGlyphSource2D;
00049 class vtkBarLabelArray;
00050
00051 class VTK_HYBRID_EXPORT vtkBarChartActor : public vtkActor2D
00052 {
00053 public:
00055
00056 vtkTypeRevisionMacro(vtkBarChartActor,vtkActor2D);
00057 void PrintSelf(ostream& os, vtkIndent indent);
00059
00061 static vtkBarChartActor *New();
00062
00064 virtual void SetInput(vtkDataObject*);
00065
00067
00068 vtkGetObjectMacro(Input,vtkDataObject);
00070
00072
00073 vtkSetMacro(TitleVisibility, int);
00074 vtkGetMacro(TitleVisibility, int);
00075 vtkBooleanMacro(TitleVisibility, int);
00077
00079
00080 vtkSetStringMacro(Title);
00081 vtkGetStringMacro(Title);
00083
00085
00087 virtual void SetTitleTextProperty(vtkTextProperty *p);
00088 vtkGetObjectMacro(TitleTextProperty,vtkTextProperty);
00090
00092
00093 vtkSetMacro(LabelVisibility, int);
00094 vtkGetMacro(LabelVisibility, int);
00095 vtkBooleanMacro(LabelVisibility, int);
00097
00099
00101 virtual void SetLabelTextProperty(vtkTextProperty *p);
00102 vtkGetObjectMacro(LabelTextProperty,vtkTextProperty);
00104
00106
00108 void SetBarColor(int i, double r, double g, double b);
00109 void SetBarColor(int i, const double color[3])
00110 { this->SetBarColor(i, color[0], color[1], color[2]); }
00111 double *GetBarColor(int i);
00113
00115
00117 void SetBarLabel(const int i, const char *);
00118 const char* GetBarLabel(int i);
00120
00122
00123 vtkSetStringMacro(YTitle);
00124 vtkGetStringMacro(YTitle);
00126
00128
00131 vtkSetMacro(LegendVisibility, int);
00132 vtkGetMacro(LegendVisibility, int);
00133 vtkBooleanMacro(LegendVisibility, int);
00135
00137
00139 vtkGetObjectMacro(LegendActor,vtkLegendBoxActor);
00141
00143
00144 int RenderOverlay(vtkViewport*);
00145 int RenderOpaqueGeometry(vtkViewport*);
00146 virtual int RenderTranslucentPolygonalGeometry(vtkViewport* ) {return 0;}
00148
00150 virtual int HasTranslucentPolygonalGeometry();
00151
00155 void ReleaseGraphicsResources(vtkWindow *);
00156
00157 protected:
00158 vtkBarChartActor();
00159 ~vtkBarChartActor();
00160
00161 private:
00162 vtkDataObject *Input;
00163 vtkIdType ArrayNumber;
00164 vtkIdType ComponentNumber;
00165 int TitleVisibility;
00166 char *Title;
00167 vtkTextProperty *TitleTextProperty;
00168 int LabelVisibility;
00169 vtkTextProperty *LabelTextProperty;
00170 vtkBarLabelArray *Labels;
00171 int LegendVisibility;
00172 vtkLegendBoxActor *LegendActor;
00173 vtkGlyphSource2D *GlyphSource;
00174
00175
00176 vtkIdType N;
00177 double *Heights;
00178 double MinHeight;
00179 double MaxHeight;
00180 double LowerLeft[2];
00181 double UpperRight[2];
00182
00183 vtkTextMapper **BarMappers;
00184 vtkActor2D **BarActors;
00185
00186 vtkTextMapper *TitleMapper;
00187 vtkActor2D *TitleActor;
00188
00189 vtkPolyData *PlotData;
00190 vtkPolyDataMapper2D *PlotMapper;
00191 vtkActor2D *PlotActor;
00192
00193 vtkAxisActor2D *YAxis;
00194 char *YTitle;
00195
00196 vtkTimeStamp BuildTime;
00197
00198 int LastPosition[2];
00199 int LastPosition2[2];
00200 double P1[3];
00201 double P2[3];
00202
00203 void Initialize();
00204 int PlaceAxes(vtkViewport *viewport, int *size);
00205 int BuildPlot(vtkViewport*);
00206
00207 private:
00208 vtkBarChartActor(const vtkBarChartActor&);
00209 void operator=(const vtkBarChartActor&);
00210 };
00211
00212
00213 #endif
00214