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
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef VISU_ScalarBarActor_HeaderFile
00029 #define VISU_ScalarBarActor_HeaderFile
00030
00031 #include "VISUPipeline.hxx"
00032 #include "VISU_LookupTable.hxx"
00033 #include "VISU_XYPlotActor.hxx"
00034
00035 #include <vtkActor2D.h>
00036 #include <vtkDoubleArray.h>
00037
00038 class vtkPolyData;
00039 class vtkPolyDataMapper2D;
00040 class vtkScalarsToColors;
00041 class vtkTextMapper;
00042 class vtkTextProperty;
00043
00044 #ifndef VTK_ORIENT_HORIZONTAL
00045 #define VTK_ORIENT_HORIZONTAL 0
00046 #endif
00047
00048 #ifndef VTK_ORIENT_VERTICAL
00049 #define VTK_ORIENT_VERTICAL 1
00050 #endif
00051
00052 class VISU_PIPELINE_EXPORT VISU_ScalarBarActor : public vtkActor2D
00053 {
00054 public:
00055 vtkTypeRevisionMacro(VISU_ScalarBarActor,vtkActor2D);
00056 void PrintSelf(ostream& os, vtkIndent indent);
00057
00058
00059
00060
00061
00062 static VISU_ScalarBarActor *New();
00063
00064
00065
00066 int RenderOpaqueGeometry(vtkViewport* viewport);
00067 int RenderTranslucentGeometry(vtkViewport*) { return 0; };
00068 int RenderOverlay(vtkViewport* viewport);
00069
00070
00071
00072
00073
00074 virtual void ReleaseGraphicsResources(vtkWindow *);
00075
00076
00077
00078
00079
00080 virtual void SetLookupTable(VISU_LookupTable*);
00081 vtkGetObjectMacro(LookupTable,VISU_LookupTable);
00082
00083
00084
00085
00086
00087 vtkSetClampMacro(MaximumNumberOfColors, int, 2, VTK_LARGE_INTEGER);
00088 vtkGetMacro(MaximumNumberOfColors, int);
00089
00090
00091
00092 vtkSetClampMacro(NumberOfLabels, int, 0, 64);
00093 vtkGetMacro(NumberOfLabels, int);
00094
00095
00096
00097 vtkSetClampMacro(Orientation,int,VTK_ORIENT_HORIZONTAL, VTK_ORIENT_VERTICAL);
00098 vtkGetMacro(Orientation, int);
00099 void SetOrientationToHorizontal()
00100 {this->SetOrientation(VTK_ORIENT_HORIZONTAL);};
00101 void SetOrientationToVertical() {this->SetOrientation(VTK_ORIENT_VERTICAL);};
00102
00103
00104
00105 virtual void SetTitleTextProperty(vtkTextProperty *p);
00106 vtkGetObjectMacro(TitleTextProperty,vtkTextProperty);
00107
00108
00109
00110 virtual void SetLabelTextProperty(vtkTextProperty *p);
00111 vtkGetObjectMacro(LabelTextProperty,vtkTextProperty);
00112
00113
00114
00115
00116 virtual void SetDistribution(vtkDoubleArray *d);
00117 vtkGetObjectMacro(Distribution,vtkDoubleArray);
00118
00119
00120
00121 void SetDistributionVisibility(int v);
00122 vtkGetMacro(DistributionVisibility, int);
00123 void DistributionVisibilityOn()
00124 {this->SetDistributionVisibility(1);};
00125 void DistributionVisibilityOff() {this->SetDistributionVisibility(0);};
00126
00127 void DebugOn();
00128 void DebugOff();
00129
00130
00131
00132
00133
00134 void SetRatios(int titleRatioSize,int labelRatioWidth,
00135 int barRatioWidth, int barRatioHeight);
00136 void GetRatios(int& titleRatioSize, int& labelRatioWidth,
00137 int& barRatioWidth, int& barRatioHeight);
00138
00139
00140
00141
00142 vtkSetStringMacro(LabelFormat);
00143 vtkGetStringMacro(LabelFormat);
00144
00145
00146
00147 vtkSetStringMacro(Title);
00148 vtkGetStringMacro(Title);
00149
00150
00151
00152 void ShallowCopy(vtkProp *prop);
00153
00154 protected:
00155 VISU_ScalarBarActor();
00156 ~VISU_ScalarBarActor();
00157
00158 VISU_LookupTable *LookupTable;
00159 vtkTextProperty *TitleTextProperty;
00160 vtkTextProperty *LabelTextProperty;
00161
00165 vtkDoubleArray *Distribution;
00167 int DistributionVisibility;
00168
00169 int MaximumNumberOfColors;
00170 int NumberOfLabels;
00171 int NumberOfLabelsBuilt;
00172 int Orientation;
00173 char *Title;
00174 char *LabelFormat;
00175 int TitleRatioSize;
00176 int LabelRatioWidth;
00177 int BarRatioWidth;
00178 int BarRatioHeight;
00179
00180 vtkTextMapper **TextMappers;
00181 virtual void AllocateAndSizeLabels(int *labelSize, int *size,
00182 vtkViewport *viewport, vtkFloatingPointType *range);
00183
00184 private:
00185 vtkTextMapper *TitleMapper;
00186 vtkActor2D *TitleActor;
00187
00188 vtkActor2D **TextActors;
00189
00190 vtkPolyData *ScalarBar;
00191 vtkPolyDataMapper2D *ScalarBarMapper;
00192 vtkActor2D *ScalarBarActor;
00193
00194 vtkDataObject *DistributionObj;
00195 VISU_XYPlotActor *DistributionActor;
00196
00197 vtkTimeStamp BuildTime;
00198 int LastSize[2];
00199 int LastOrigin[2];
00200
00201 void SizeTitle(int *titleSize, int *size, vtkViewport *viewport);
00202
00203 void SizeBar(int& barSizeWidth, int& barSizeHeight, int *size,
00204 vtkViewport *viewport, vtkFloatingPointType *range);
00205
00208 void PlaceDistribution(vtkViewport *viewport, const int barWidth, const int barHeight);
00209
00210 private:
00211 VISU_ScalarBarActor(const VISU_ScalarBarActor&);
00212 void operator=(const VISU_ScalarBarActor&);
00213 };
00214
00215 #endif